Linux vps-61133.fhnet.fr 4.9.0-19-amd64 #1 SMP Debian 4.9.320-2 (2022-06-30) x86_64
Apache/2.4.25 (Debian)
Server IP : 93.113.207.21 & Your IP : 216.73.216.119
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
var /
www /
html /
webedi.bdcloud.fr /
includes /
ace /
src /
Delete
Unzip
Name
Size
Permission
Date
Action
snippets
[ DIR ]
drwxr-xr-x
2025-11-08 11:17
ace.js
717.99
KB
-rw-r--r--
2020-05-12 15:31
ext-beautify.js
11.79
KB
-rw-r--r--
2020-04-18 15:05
ext-code_lens.js
7.49
KB
-rw-r--r--
2020-05-12 15:31
ext-elastic_tabstops_lite.js
8.74
KB
-rw-r--r--
2020-04-18 15:05
ext-emmet.js
47.29
KB
-rw-r--r--
2020-05-12 15:31
ext-error_marker.js
336
B
-rw-r--r--
2020-04-18 15:05
ext-keybinding_menu.js
6.06
KB
-rw-r--r--
2020-05-12 15:31
ext-language_tools.js
74.47
KB
-rw-r--r--
2020-05-12 15:31
ext-linking.js
1.95
KB
-rw-r--r--
2020-04-18 15:05
ext-modelist.js
7.1
KB
-rw-r--r--
2020-05-12 15:31
ext-options.js
23.92
KB
-rw-r--r--
2020-05-12 15:31
ext-prompt.js
94.39
KB
-rw-r--r--
2020-05-12 15:31
ext-rtl.js
4.44
KB
-rw-r--r--
2020-04-18 15:05
ext-searchbox.js
16.74
KB
-rw-r--r--
2020-04-18 15:05
ext-settings_menu.js
24.74
KB
-rw-r--r--
2020-05-12 15:31
ext-spellcheck.js
2.46
KB
-rw-r--r--
2020-05-12 15:31
ext-split.js
6.39
KB
-rw-r--r--
2020-04-18 15:05
ext-static_highlight.js
6.87
KB
-rw-r--r--
2020-04-18 15:05
ext-statusbar.js
1.87
KB
-rw-r--r--
2020-04-18 15:05
ext-textarea.js
16.11
KB
-rw-r--r--
2020-04-18 15:05
ext-themelist.js
2.63
KB
-rw-r--r--
2020-04-18 15:05
ext-whitespace.js
6.44
KB
-rw-r--r--
2020-04-18 15:05
keybinding-emacs.js
39.72
KB
-rw-r--r--
2020-05-12 15:31
keybinding-sublime.js
11.12
KB
-rw-r--r--
2020-05-12 15:31
keybinding-vim.js
214.18
KB
-rw-r--r--
2020-05-12 15:31
keybinding-vscode.js
8.07
KB
-rw-r--r--
2020-05-12 15:31
mode-abap.js
9.17
KB
-rw-r--r--
2020-04-18 15:05
mode-abc.js
9.17
KB
-rw-r--r--
2020-04-18 15:05
mode-actionscript.js
24.39
KB
-rw-r--r--
2020-04-18 15:05
mode-ada.js
4.2
KB
-rw-r--r--
2020-04-18 15:05
mode-apache_conf.js
18.94
KB
-rw-r--r--
2020-04-18 15:05
mode-apex.js
15.28
KB
-rw-r--r--
2020-04-18 15:05
mode-applescript.js
9.67
KB
-rw-r--r--
2020-04-18 15:05
mode-aql.js
4.6
KB
-rw-r--r--
2020-04-18 15:05
mode-asciidoc.js
13.79
KB
-rw-r--r--
2020-04-18 15:05
mode-asl.js
15.9
KB
-rw-r--r--
2020-04-18 15:05
mode-assembly_x86.js
11.76
KB
-rw-r--r--
2020-04-18 15:05
mode-autohotkey.js
66.03
KB
-rw-r--r--
2020-04-18 15:05
mode-batchfile.js
8.37
KB
-rw-r--r--
2020-04-18 15:05
mode-bro.js
11.09
KB
-rw-r--r--
2020-04-18 15:05
mode-c9search.js
9.72
KB
-rw-r--r--
2020-04-18 15:05
mode-c_cpp.js
18.81
KB
-rw-r--r--
2020-04-18 15:05
mode-cirru.js
6.15
KB
-rw-r--r--
2020-04-18 15:05
mode-clojure.js
12.77
KB
-rw-r--r--
2020-04-18 15:05
mode-cobol.js
3.6
KB
-rw-r--r--
2020-04-18 15:05
mode-coffee.js
14.34
KB
-rw-r--r--
2020-04-18 15:05
mode-coldfusion.js
102.71
KB
-rw-r--r--
2020-04-18 15:05
mode-crystal.js
23.55
KB
-rw-r--r--
2020-04-18 15:05
mode-csharp.js
16.41
KB
-rw-r--r--
2020-04-18 15:05
mode-csound_document.js
120.57
KB
-rw-r--r--
2020-05-12 15:31
mode-csound_orchestra.js
73.25
KB
-rw-r--r--
2020-05-12 15:31
mode-csound_score.js
14.02
KB
-rw-r--r--
2020-04-18 15:05
mode-csp.js
2.22
KB
-rw-r--r--
2020-04-18 15:05
mode-css.js
31.06
KB
-rw-r--r--
2020-04-18 15:05
mode-curly.js
100.79
KB
-rw-r--r--
2020-04-18 15:05
mode-d.js
17.42
KB
-rw-r--r--
2020-04-18 15:05
mode-dart.js
24.72
KB
-rw-r--r--
2020-04-18 15:05
mode-diff.js
4.64
KB
-rw-r--r--
2020-04-18 15:05
mode-django.js
101.6
KB
-rw-r--r--
2020-04-18 15:05
mode-dockerfile.js
16.11
KB
-rw-r--r--
2020-04-18 15:05
mode-dot.js
13.82
KB
-rw-r--r--
2020-04-18 15:05
mode-drools.js
18.68
KB
-rw-r--r--
2020-04-18 15:05
mode-edifact.js
5.31
KB
-rw-r--r--
2020-04-18 15:05
mode-eiffel.js
5.15
KB
-rw-r--r--
2020-04-18 15:05
mode-ejs.js
118.45
KB
-rw-r--r--
2020-04-18 15:05
mode-elixir.js
23.07
KB
-rw-r--r--
2020-04-18 15:05
mode-elm.js
9.47
KB
-rw-r--r--
2020-04-18 15:05
mode-erlang.js
45.63
KB
-rw-r--r--
2020-04-18 15:05
mode-forth.js
11.3
KB
-rw-r--r--
2020-04-18 15:05
mode-fortran.js
15.04
KB
-rw-r--r--
2020-04-18 15:05
mode-fsharp.js
10.39
KB
-rw-r--r--
2020-04-18 15:05
mode-fsl.js
8.53
KB
-rw-r--r--
2020-04-18 15:05
mode-ftl.js
50.14
KB
-rw-r--r--
2020-04-18 15:05
mode-gcode.js
3.09
KB
-rw-r--r--
2020-04-18 15:05
mode-gherkin.js
4.87
KB
-rw-r--r--
2020-04-18 15:05
mode-gitignore.js
1.77
KB
-rw-r--r--
2020-04-18 15:05
mode-glsl.js
21.86
KB
-rw-r--r--
2020-04-18 15:05
mode-gobstones.js
43.09
KB
-rw-r--r--
2020-04-18 15:05
mode-golang.js
13.82
KB
-rw-r--r--
2020-04-18 15:05
mode-graphqlschema.js
6.71
KB
-rw-r--r--
2020-04-18 15:05
mode-groovy.js
38.02
KB
-rw-r--r--
2020-04-18 15:05
mode-haml.js
63.97
KB
-rw-r--r--
2020-04-18 15:05
mode-handlebars.js
102.35
KB
-rw-r--r--
2020-04-18 15:05
mode-haskell.js
17.05
KB
-rw-r--r--
2020-04-18 15:05
mode-haskell_cabal.js
4.47
KB
-rw-r--r--
2020-04-18 15:05
mode-haxe.js
12.27
KB
-rw-r--r--
2020-04-18 15:05
mode-hjson.js
11.09
KB
-rw-r--r--
2020-04-18 15:05
mode-html.js
99.24
KB
-rw-r--r--
2020-04-18 15:05
mode-html_elixir.js
124.58
KB
-rw-r--r--
2020-04-18 15:05
mode-html_ruby.js
119.19
KB
-rw-r--r--
2020-04-18 15:05
mode-ini.js
4.88
KB
-rw-r--r--
2020-04-18 15:05
mode-io.js
9.05
KB
-rw-r--r--
2020-04-18 15:05
mode-jack.js
11.02
KB
-rw-r--r--
2020-04-18 15:05
mode-jade.js
79.34
KB
-rw-r--r--
2020-05-12 15:31
mode-java.js
39.7
KB
-rw-r--r--
2020-04-18 15:05
mode-javascript.js
31.03
KB
-rw-r--r--
2020-04-18 15:05
mode-json.js
10.24
KB
-rw-r--r--
2020-04-18 15:05
mode-json5.js
11.28
KB
-rw-r--r--
2020-05-12 15:31
mode-jsoniq.js
320.49
KB
-rw-r--r--
2020-04-18 15:05
mode-jsp.js
58.42
KB
-rw-r--r--
2020-04-18 15:05
mode-jssm.js
10.55
KB
-rw-r--r--
2020-04-18 15:05
mode-jsx.js
13.36
KB
-rw-r--r--
2020-04-18 15:05
mode-julia.js
11.93
KB
-rw-r--r--
2020-04-18 15:05
mode-kotlin.js
24.32
KB
-rw-r--r--
2020-04-18 15:05
mode-latex.js
9.49
KB
-rw-r--r--
2020-04-18 15:05
mode-less.js
35.21
KB
-rw-r--r--
2020-04-18 15:05
mode-liquid.js
107.71
KB
-rw-r--r--
2020-04-18 15:05
mode-lisp.js
3.47
KB
-rw-r--r--
2020-04-18 15:05
mode-livescript.js
8.34
KB
-rw-r--r--
2020-04-18 15:05
mode-logiql.js
10.65
KB
-rw-r--r--
2020-04-18 15:05
mode-logtalk.js
15.65
KB
-rw-r--r--
2020-04-18 15:05
mode-lsl.js
31.14
KB
-rw-r--r--
2020-04-18 15:05
mode-lua.js
14.98
KB
-rw-r--r--
2020-04-18 15:05
mode-luapage.js
115.82
KB
-rw-r--r--
2020-04-18 15:05
mode-lucene.js
4.78
KB
-rw-r--r--
2020-04-18 15:05
mode-makefile.js
13.12
KB
-rw-r--r--
2020-04-18 15:05
mode-markdown.js
121.58
KB
-rw-r--r--
2020-05-12 15:31
mode-mask.js
70.27
KB
-rw-r--r--
2020-05-12 15:31
mode-matlab.js
22.9
KB
-rw-r--r--
2020-04-18 15:05
mode-maze.js
9.17
KB
-rw-r--r--
2020-04-18 15:05
mode-mel.js
28.47
KB
-rw-r--r--
2020-04-18 15:05
mode-mixal.js
5.15
KB
-rw-r--r--
2020-04-18 15:05
mode-mushcode.js
12.08
KB
-rw-r--r--
2020-04-18 15:05
mode-mysql.js
8.79
KB
-rw-r--r--
2020-04-18 15:05
mode-nginx.js
20.03
KB
-rw-r--r--
2020-04-18 15:05
mode-nim.js
12.13
KB
-rw-r--r--
2020-04-18 15:05
mode-nix.js
23.54
KB
-rw-r--r--
2020-04-18 15:05
mode-nsis.js
14.76
KB
-rw-r--r--
2020-05-12 15:31
mode-nunjucks.js
105.16
KB
-rw-r--r--
2020-05-12 15:31
mode-objectivec.js
64.25
KB
-rw-r--r--
2020-04-18 15:05
mode-ocaml.js
21.26
KB
-rw-r--r--
2020-04-18 15:05
mode-pascal.js
7.92
KB
-rw-r--r--
2020-04-18 15:05
mode-perl.js
13.04
KB
-rw-r--r--
2020-04-18 15:05
mode-perl6.js
24.53
KB
-rw-r--r--
2020-04-18 15:05
mode-pgsql.js
84.98
KB
-rw-r--r--
2020-04-18 15:05
mode-php.js
580.88
KB
-rw-r--r--
2020-04-18 15:05
mode-php_laravel_blade.js
588.06
KB
-rw-r--r--
2020-04-18 15:05
mode-pig.js
10.91
KB
-rw-r--r--
2020-04-18 15:05
mode-plain_text.js
1.06
KB
-rw-r--r--
2020-04-18 15:05
mode-powershell.js
38.23
KB
-rw-r--r--
2020-04-18 15:05
mode-praat.js
17.59
KB
-rw-r--r--
2020-04-18 15:05
mode-prolog.js
14.07
KB
-rw-r--r--
2020-04-18 15:05
mode-properties.js
2.33
KB
-rw-r--r--
2020-04-18 15:05
mode-protobuf.js
21.98
KB
-rw-r--r--
2020-04-18 15:05
mode-puppet.js
12.8
KB
-rw-r--r--
2020-04-18 15:05
mode-python.js
15.13
KB
-rw-r--r--
2020-04-18 15:05
mode-r.js
9.91
KB
-rw-r--r--
2020-04-18 15:05
mode-razor.js
111.4
KB
-rw-r--r--
2020-04-18 15:05
mode-rdoc.js
8.06
KB
-rw-r--r--
2020-04-18 15:05
mode-red.js
19.83
KB
-rw-r--r--
2020-04-18 15:05
mode-redshift.js
13.99
KB
-rw-r--r--
2020-04-18 15:05
mode-rhtml.js
108.53
KB
-rw-r--r--
2020-04-18 15:05
mode-rst.js
5.83
KB
-rw-r--r--
2020-04-18 15:05
mode-ruby.js
18.75
KB
-rw-r--r--
2020-04-18 15:05
mode-rust.js
11.13
KB
-rw-r--r--
2020-05-12 15:31
mode-sass.js
23.81
KB
-rw-r--r--
2020-04-18 15:05
mode-scad.js
12.89
KB
-rw-r--r--
2020-04-18 15:05
mode-scala.js
38.13
KB
-rw-r--r--
2020-04-18 15:05
mode-scheme.js
7.14
KB
-rw-r--r--
2020-04-18 15:05
mode-scss.js
36.93
KB
-rw-r--r--
2020-04-18 15:05
mode-sh.js
14.49
KB
-rw-r--r--
2020-04-18 15:05
mode-sjs.js
36.98
KB
-rw-r--r--
2020-04-18 15:05
mode-slim.js
174.98
KB
-rw-r--r--
2020-05-12 15:31
mode-smarty.js
104.2
KB
-rw-r--r--
2020-04-18 15:05
mode-snippets.js
7.04
KB
-rw-r--r--
2020-04-18 15:05
mode-soy_template.js
112.5
KB
-rw-r--r--
2020-04-18 15:05
mode-space.js
4.99
KB
-rw-r--r--
2020-04-18 15:05
mode-sparql.js
12.35
KB
-rw-r--r--
2020-04-18 15:05
mode-sql.js
3.34
KB
-rw-r--r--
2020-04-18 15:05
mode-sqlserver.js
23.07
KB
-rw-r--r--
2020-04-18 15:05
mode-stylus.js
20.92
KB
-rw-r--r--
2020-04-18 15:05
mode-svg.js
57.59
KB
-rw-r--r--
2020-04-18 15:05
mode-swift.js
13.22
KB
-rw-r--r--
2020-04-18 15:05
mode-tcl.js
12.23
KB
-rw-r--r--
2020-04-18 15:05
mode-terraform.js
12.93
KB
-rw-r--r--
2020-04-18 15:05
mode-tex.js
5.13
KB
-rw-r--r--
2020-04-18 15:05
mode-text.js
329
B
-rw-r--r--
2020-04-18 15:05
mode-textile.js
4.18
KB
-rw-r--r--
2020-04-18 15:05
mode-toml.js
4.17
KB
-rw-r--r--
2020-04-18 15:05
mode-tsx.js
34.09
KB
-rw-r--r--
2020-04-18 15:05
mode-turtle.js
9.31
KB
-rw-r--r--
2020-04-18 15:05
mode-twig.js
104.9
KB
-rw-r--r--
2020-04-18 15:05
mode-typescript.js
33.67
KB
-rw-r--r--
2020-04-18 15:05
mode-vala.js
27.08
KB
-rw-r--r--
2020-04-18 15:05
mode-vbscript.js
7.57
KB
-rw-r--r--
2020-04-18 15:05
mode-velocity.js
108.36
KB
-rw-r--r--
2020-04-18 15:05
mode-verilog.js
4.45
KB
-rw-r--r--
2020-04-18 15:05
mode-vhdl.js
3.78
KB
-rw-r--r--
2020-05-12 15:31
mode-visualforce.js
103.47
KB
-rw-r--r--
2020-04-18 15:05
mode-wollok.js
34.9
KB
-rw-r--r--
2020-04-18 15:05
mode-xml.js
23.42
KB
-rw-r--r--
2020-04-18 15:05
mode-xquery.js
317.76
KB
-rw-r--r--
2020-04-18 15:05
mode-yaml.js
10.35
KB
-rw-r--r--
2020-04-18 15:05
mode-zeek.js
16.65
KB
-rw-r--r--
2020-04-18 15:05
theme-ambiance.js
27.53
KB
-rw-r--r--
2020-04-18 15:05
theme-chaos.js
3.45
KB
-rw-r--r--
2020-04-18 15:05
theme-chrome.js
3.28
KB
-rw-r--r--
2020-04-18 15:05
theme-clouds.js
2.6
KB
-rw-r--r--
2020-04-18 15:05
theme-clouds_midnight.js
2.95
KB
-rw-r--r--
2020-04-18 15:05
theme-cobalt.js
2.9
KB
-rw-r--r--
2020-04-18 15:05
theme-crimson_editor.js
3.37
KB
-rw-r--r--
2020-04-18 15:05
theme-dawn.js
2.78
KB
-rw-r--r--
2020-04-18 15:05
theme-dracula.js
3.16
KB
-rw-r--r--
2020-04-18 15:05
theme-dreamweaver.js
3.73
KB
-rw-r--r--
2020-04-18 15:05
theme-eclipse.js
2.65
KB
-rw-r--r--
2020-04-18 15:05
theme-github.js
2.72
KB
-rw-r--r--
2020-04-18 15:05
theme-gob.js
2.92
KB
-rw-r--r--
2020-04-18 15:05
theme-gruvbox.js
2.17
KB
-rw-r--r--
2020-04-18 15:05
theme-idle_fingers.js
2.77
KB
-rw-r--r--
2020-04-18 15:05
theme-iplastic.js
6.94
KB
-rw-r--r--
2020-04-18 15:05
theme-katzenmilch.js
3.68
KB
-rw-r--r--
2020-04-18 15:05
theme-kr_theme.js
2.83
KB
-rw-r--r--
2020-04-18 15:05
theme-kuroir.js
2.51
KB
-rw-r--r--
2020-04-18 15:05
theme-merbivore.js
2.75
KB
-rw-r--r--
2020-04-18 15:05
theme-merbivore_soft.js
2.97
KB
-rw-r--r--
2020-04-18 15:05
theme-mono_industrial.js
3.32
KB
-rw-r--r--
2020-04-18 15:05
theme-monokai.js
2.91
KB
-rw-r--r--
2020-04-18 15:05
theme-pastel_on_dark.js
3.17
KB
-rw-r--r--
2020-04-18 15:05
theme-solarized_dark.js
2.82
KB
-rw-r--r--
2020-04-18 15:05
theme-solarized_light.js
2.87
KB
-rw-r--r--
2020-04-18 15:05
theme-sqlserver.js
3.48
KB
-rw-r--r--
2020-04-18 15:05
theme-terminal.js
3.45
KB
-rw-r--r--
2020-04-18 15:05
theme-textmate.js
3.2
KB
-rw-r--r--
2020-04-18 15:05
theme-tomorrow.js
3.09
KB
-rw-r--r--
2020-04-18 15:05
theme-tomorrow_night.js
3.35
KB
-rw-r--r--
2020-04-18 15:05
theme-tomorrow_night_blue.js
3.56
KB
-rw-r--r--
2020-04-18 15:05
theme-tomorrow_night_bright.js
4.05
KB
-rw-r--r--
2020-04-18 15:05
theme-tomorrow_night_eighties.js
3.75
KB
-rw-r--r--
2020-04-18 15:05
theme-twilight.js
3.04
KB
-rw-r--r--
2020-04-18 15:05
theme-vibrant_ink.js
2.72
KB
-rw-r--r--
2020-04-18 15:05
theme-xcode.js
2.43
KB
-rw-r--r--
2020-04-18 15:05
worker-coffee.js
362.1
KB
-rw-r--r--
2020-05-12 15:31
worker-css.js
290.27
KB
-rw-r--r--
2020-05-12 15:31
worker-html.js
329.85
KB
-rw-r--r--
2020-05-12 15:31
worker-javascript.js
336.68
KB
-rw-r--r--
2020-05-12 15:31
worker-json.js
70.67
KB
-rw-r--r--
2020-05-12 15:31
worker-lua.js
102.94
KB
-rw-r--r--
2020-05-12 15:31
worker-php.js
147.24
KB
-rw-r--r--
2020-05-12 15:31
worker-xml.js
109.68
KB
-rw-r--r--
2020-05-12 15:31
worker-xquery.js
3.36
MB
-rw-r--r--
2020-05-12 15:31
Save
Rename
define("ace/mode/crystal_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 CrystalHighlightRules = function () { var builtinFunctions = ( "puts|initialize|previous_def|typeof|as|pointerof|sizeof|instance_sizeof" ); var keywords = ( "if|end|else|elsif|unless|case|when|break|while|next|until|def|return|class|new|getter|setter|property|lib" + "|fun|do|struct|private|protected|public|module|super|abstract|include|extend|begin|enum|raise|yield|with" + "|alias|rescue|ensure|macro|uninitialized|union|type|require" ); var buildinConstants = ( "true|TRUE|false|FALSE|nil|NIL|__LINE__|__END_LINE__|__FILE__|__DIR__" ); 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 }, "identifier"); var hexNumber = "(?:0[xX][\\dA-Fa-f]+)"; var decNumber = "(?:[0-9][\\d_]*)"; var octNumber = "(?:0o[0-7][0-7]*)"; var binNumber = "(?:0[bB][01]+)"; var intNumber = "(?:[+-]?)(?:" + hexNumber + "|" + decNumber + "|" + octNumber + "|" + binNumber + ")(?:_?[iIuU](?:8|16|32|64))?\\b"; var escapeExpression = /\\(?:[nsrtvfbae'"\\]|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4}|u{[\da-fA-F]{1,6}})/; var extEscapeExspresssion = /\\(?:[nsrtvfbae'"\\]|[0-7]{3}|x[\da-fA-F]{2}|u[\da-fA-F]{4}|u{[\da-fA-F]{1,6}}|u{(:?[\da-fA-F]{2}\s)*[\da-fA-F]{2}})/; this.$rules = { "start": [ { token: "comment", regex: "#.*$" }, { token: "string.regexp", regex: "[/]", push: [{ token: "constant.language.escape", regex: extEscapeExspresssion }, { token: "string.regexp", regex: "[/][imx]*(?=[).,;\\s]|$)", next: "pop" }, { defaultToken: "string.regexp" }] }, [{ regex: "[{}]", onMatch: function (val, state, stack) { this.next = val == "{" ? this.nextState : ""; if (val == "{" && stack.length) { stack.unshift("start", state); return "paren.lparen"; } if (val == "}" && stack.length) { stack.shift(); this.next = stack.shift(); if (this.next.indexOf("string") != -1) return "paren.end"; } return val == "{" ? "paren.lparen" : "paren.rparen"; }, nextState: "start" }, { token: "string.start", regex: /"/, push: [{ token: "constant.language.escape", regex: extEscapeExspresssion }, { token: "string", regex: /\\#{/ }, { token: "paren.start", regex: /#{/, push: "start" }, { token: "string.end", regex: /"/, next: "pop" }, { defaultToken: "string" }] }, { token: "string.start", regex: /`/, push: [{ token: "constant.language.escape", regex: extEscapeExspresssion }, { token: "string", regex: /\\#{/ }, { token: "paren.start", regex: /#{/, push: "start" }, { token: "string.end", regex: /`/, next: "pop" }, { defaultToken: "string" }] }, { stateName: "rpstring", token: "string.start", regex: /%[Qx]?\(/, push: [{ token: "constant.language.escape", regex: extEscapeExspresssion }, { token: "string.start", regex: /\(/, push: "rpstring" }, { token: "string.end", regex: /\)/, next: "pop" }, { token: "paren.start", regex: /#{/, push: "start" }, { defaultToken: "string" }] }, { stateName: "spstring", token: "string.start", regex: /%[Qx]?\[/, push: [{ token: "constant.language.escape", regex: extEscapeExspresssion }, { token: "string.start", regex: /\[/, push: "spstring" }, { token: "string.end", regex: /]/, next: "pop" }, { token: "paren.start", regex: /#{/, push: "start" }, { defaultToken: "string" }] }, { stateName: "fpstring", token: "string.start", regex: /%[Qx]?{/, push: [{ token: "constant.language.escape", regex: extEscapeExspresssion }, { token: "string.start", regex: /{/, push: "fpstring" }, { token: "string.end", regex: /}/, next: "pop" }, { token: "paren.start", regex: /#{/, push: "start" }, { defaultToken: "string" }] }, { stateName: "tpstring", token: "string.start", regex: /%[Qx]?</, push: [{ token: "constant.language.escape", regex: extEscapeExspresssion }, { token: "string.start", regex: /</, push: "tpstring" }, { token: "string.end", regex: />/, next: "pop" }, { token: "paren.start", regex: /#{/, push: "start" }, { defaultToken: "string" }] }, { stateName: "ppstring", token: "string.start", regex: /%[Qx]?\|/, push: [{ token: "constant.language.escape", regex: extEscapeExspresssion }, { token: "string.end", regex: /\|/, next: "pop" }, { token: "paren.start", regex: /#{/, push: "start" }, { defaultToken: "string" }] }, { stateName: "rpqstring", token: "string.start", regex: /%[qwir]\(/, push: [{ token: "string.start", regex: /\(/, push: "rpqstring" }, { token: "string.end", regex: /\)/, next: "pop" }, { defaultToken: "string" }] }, { stateName: "spqstring", token: "string.start", regex: /%[qwir]\[/, push: [{ token: "string.start", regex: /\[/, push: "spqstring" }, { token: "string.end", regex: /]/, next: "pop" }, { defaultToken: "string" }] }, { stateName: "fpqstring", token: "string.start", regex: /%[qwir]{/, push: [{ token: "string.start", regex: /{/, push: "fpqstring" }, { token: "string.end", regex: /}/, next: "pop" }, { defaultToken: "string" }] }, { stateName: "tpqstring", token: "string.start", regex: /%[qwir]</, push: [{ token: "string.start", regex: /</, push: "tpqstring" }, { token: "string.end", regex: />/, next: "pop" }, { defaultToken: "string" }] }, { stateName: "ppqstring", token: "string.start", regex: /%[qwir]\|/, push: [{ token: "string.end", regex: /\|/, next: "pop" }, { defaultToken: "string" }] }, { token: "string.start", regex: /'/, push: [{ token: "constant.language.escape", regex: escapeExpression }, { token: "string.end", regex: /'|$/, next: "pop" }, { defaultToken: "string" }] }], { token: "text", // namespaces aren't symbols regex: "::" }, { token: "variable.instance", // instance variable regex: "@{1,2}[a-zA-Z_\\d]+" }, { token: "variable.fresh", // fresh variable regex: "%[a-zA-Z_\\d]+" }, { token: "support.class", // class name regex: "[A-Z][a-zA-Z_\\d]+" }, { token: "constant.other.symbol", // symbol regex: "[:](?:(?:===|<=>|\\[]\\?|\\[]=|\\[]|>>|\\*\\*|<<|==|!=|>=|<=|!~|=~|<|\\+|-|\\*|\\/|%|&|\\||\\^|>|!|~)|(?:(?:[A-Za-z_]|[@$](?=[a-zA-Z0-9_]))[a-zA-Z0-9_]*[!=?]?))" }, { token: "constant.numeric", // float regex: "[+-]?\\d(?:\\d|_(?=\\d))*(?:(?:\\.\\d(?:\\d|_(?=\\d))*)?(?:[eE][+-]?\\d+)?)?(?:_?[fF](?:32|64))?\\b" }, { token: "constant.numeric", regex: intNumber }, { token: "constant.other.symbol", regex: ':"', push: [{ token: "constant.language.escape", regex: extEscapeExspresssion }, { token: "constant.other.symbol", regex: '"', next: "pop" }, { defaultToken: "constant.other.symbol" }] }, { token: "constant.language.boolean", regex: "(?:true|false)\\b" }, { token: "support.function", regex: "(?:is_a\\?|nil\\?|responds_to\\?|as\\?)" }, { token: keywordMapper, regex: "[a-zA-Z_$][a-zA-Z0-9_$!?]*\\b" }, { token: "variable.system", regex: "\\$\\!|\\$\\?" }, { token: "punctuation.separator.key-value", regex: "=>" }, { stateName: "heredoc", onMatch: function (value, currentState, stack) { var next = "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: [{ 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") return stack[0]; return currentState; } }, { token: "punctuation.operator", regex: /[.]\s*(?![.])/, push: [{ token : "punctuation.operator", regex : /[.]\s*(?![.])/ }, { token : "support.function", regex : "[a-zA-Z_$][a-zA-Z0-9_$]*\\b" }, { regex: "", token: "empty", next: "pop" }] }, { token: "keyword.operator", regex: "!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|\\?|\\:|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\^|\\|" }, { token: "punctuation.operator", regex: /[?:,;.]/ }, { token: "paren.lparen", regex: "[[({]" }, { token: "paren.rparen", regex: "[\\])}]" }, { token: "text", regex: "\\s+" } ] }; this.normalizeRules(); }; oop.inherits(CrystalHighlightRules, TextHighlightRules); exports.CrystalHighlightRules = CrystalHighlightRules; }); 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/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.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) { 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/crystal",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/crystal_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/mode/behaviour/cstyle","ace/mode/folding/coffee"], function(require, exports, module) { "use strict"; var oop = require("../lib/oop"); var TextMode = require("./text").Mode; var CrystalHighlightRules = require("./crystal_highlight_rules").CrystalHighlightRules; 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() { this.HighlightRules = CrystalHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.$behaviour = new CstyleBehaviour(); this.foldingRules = new FoldMode(); }; 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)\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.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.$id = "ace/mode/crystal"; }).call(Mode.prototype); exports.Mode = Mode; }); (function() { window.require(["ace/mode/crystal"], function(m) { if (typeof module == "object" && typeof exports == "object" && module) { module.exports = m; } }); })();