ace-rails-ap 4.1.5 → 4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (234) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +1 -1
  3. data/lib/ace/rails/version.rb +1 -1
  4. data/vendor/assets/javascripts/ace/ace.js +3960 -2205
  5. data/vendor/assets/javascripts/ace/ext-beautify.js +279 -290
  6. data/vendor/assets/javascripts/ace/ext-elastic_tabstops_lite.js +6 -3
  7. data/vendor/assets/javascripts/ace/ext-emmet.js +14 -11
  8. data/vendor/assets/javascripts/ace/ext-error_marker.js +6 -3
  9. data/vendor/assets/javascripts/ace/ext-keybinding_menu.js +24 -6
  10. data/vendor/assets/javascripts/ace/ext-language_tools.js +118 -81
  11. data/vendor/assets/javascripts/ace/ext-linking.js +7 -4
  12. data/vendor/assets/javascripts/ace/ext-modelist.js +34 -10
  13. data/vendor/assets/javascripts/ace/ext-options.js +755 -0
  14. data/vendor/assets/javascripts/ace/ext-rtl.js +124 -0
  15. data/vendor/assets/javascripts/ace/ext-searchbox.js +45 -40
  16. data/vendor/assets/javascripts/ace/ext-settings_menu.js +478 -365
  17. data/vendor/assets/javascripts/ace/ext-spellcheck.js +7 -4
  18. data/vendor/assets/javascripts/ace/ext-split.js +7 -46
  19. data/vendor/assets/javascripts/ace/ext-static_highlight.js +90 -22
  20. data/vendor/assets/javascripts/ace/ext-statusbar.js +7 -4
  21. data/vendor/assets/javascripts/ace/ext-textarea.js +21 -18
  22. data/vendor/assets/javascripts/ace/ext-themelist.js +8 -5
  23. data/vendor/assets/javascripts/ace/ext-whitespace.js +9 -6
  24. data/vendor/assets/javascripts/ace/keybinding-emacs.js +27 -39
  25. data/vendor/assets/javascripts/ace/keybinding-sublime.js +425 -0
  26. data/vendor/assets/javascripts/ace/keybinding-vim.js +293 -226
  27. data/vendor/assets/javascripts/ace/mode-abap.js +10 -3
  28. data/vendor/assets/javascripts/ace/mode-abc.js +11 -4
  29. data/vendor/assets/javascripts/ace/mode-actionscript.js +12 -5
  30. data/vendor/assets/javascripts/ace/mode-ada.js +54 -4
  31. data/vendor/assets/javascripts/ace/mode-apache_conf.js +12 -5
  32. data/vendor/assets/javascripts/ace/mode-apex.js +457 -0
  33. data/vendor/assets/javascripts/ace/mode-applescript.js +11 -4
  34. data/vendor/assets/javascripts/ace/mode-asciidoc.js +9 -2
  35. data/vendor/assets/javascripts/ace/mode-asl.js +421 -0
  36. data/vendor/assets/javascripts/ace/mode-assembly_x86.js +11 -4
  37. data/vendor/assets/javascripts/ace/mode-autohotkey.js +14 -7
  38. data/vendor/assets/javascripts/ace/mode-batchfile.js +12 -5
  39. data/vendor/assets/javascripts/ace/mode-bro.js +13 -6
  40. data/vendor/assets/javascripts/ace/mode-c9search.js +9 -3
  41. data/vendor/assets/javascripts/ace/mode-c_cpp.js +22 -7
  42. data/vendor/assets/javascripts/ace/mode-cirru.js +9 -2
  43. data/vendor/assets/javascripts/ace/mode-clojure.js +8 -1
  44. data/vendor/assets/javascripts/ace/mode-cobol.js +8 -1
  45. data/vendor/assets/javascripts/ace/mode-coffee.js +11 -4
  46. data/vendor/assets/javascripts/ace/mode-coldfusion.js +160 -134
  47. data/vendor/assets/javascripts/ace/mode-csharp.js +13 -6
  48. data/vendor/assets/javascripts/ace/mode-csound_document.js +3988 -0
  49. data/vendor/assets/javascripts/ace/mode-csound_orchestra.js +2924 -0
  50. data/vendor/assets/javascripts/ace/mode-csound_score.js +453 -0
  51. data/vendor/assets/javascripts/ace/mode-csp.js +59 -0
  52. data/vendor/assets/javascripts/ace/mode-css.js +47 -27
  53. data/vendor/assets/javascripts/ace/mode-curly.js +159 -133
  54. data/vendor/assets/javascripts/ace/mode-d.js +11 -4
  55. data/vendor/assets/javascripts/ace/mode-dart.js +44 -20
  56. data/vendor/assets/javascripts/ace/mode-diff.js +10 -3
  57. data/vendor/assets/javascripts/ace/mode-django.js +160 -134
  58. data/vendor/assets/javascripts/ace/mode-dockerfile.js +11 -4
  59. data/vendor/assets/javascripts/ace/mode-dot.js +11 -4
  60. data/vendor/assets/javascripts/ace/mode-drools.js +45 -5
  61. data/vendor/assets/javascripts/ace/mode-edifact.js +165 -0
  62. data/vendor/assets/javascripts/ace/mode-eiffel.js +8 -1
  63. data/vendor/assets/javascripts/ace/mode-ejs.js +160 -134
  64. data/vendor/assets/javascripts/ace/mode-elixir.js +11 -4
  65. data/vendor/assets/javascripts/ace/mode-elm.js +10 -3
  66. data/vendor/assets/javascripts/ace/mode-erlang.js +12 -5
  67. data/vendor/assets/javascripts/ace/mode-forth.js +12 -5
  68. data/vendor/assets/javascripts/ace/mode-fortran.js +10 -3
  69. data/vendor/assets/javascripts/ace/mode-fsharp.js +316 -0
  70. data/vendor/assets/javascripts/ace/mode-fsl.js +258 -0
  71. data/vendor/assets/javascripts/ace/mode-ftl.js +23 -12
  72. data/vendor/assets/javascripts/ace/mode-gcode.js +8 -1
  73. data/vendor/assets/javascripts/ace/mode-gherkin.js +10 -3
  74. data/vendor/assets/javascripts/ace/mode-gitignore.js +8 -1
  75. data/vendor/assets/javascripts/ace/mode-glsl.js +23 -8
  76. data/vendor/assets/javascripts/ace/mode-gobstones.js +13 -5
  77. data/vendor/assets/javascripts/ace/mode-golang.js +11 -4
  78. data/vendor/assets/javascripts/ace/mode-graphqlschema.js +10 -3
  79. data/vendor/assets/javascripts/ace/mode-groovy.js +13 -5
  80. data/vendor/assets/javascripts/ace/mode-haml.js +23 -12
  81. data/vendor/assets/javascripts/ace/mode-handlebars.js +159 -133
  82. data/vendor/assets/javascripts/ace/mode-haskell.js +13 -6
  83. data/vendor/assets/javascripts/ace/mode-haskell_cabal.js +8 -1
  84. data/vendor/assets/javascripts/ace/mode-haxe.js +11 -4
  85. data/vendor/assets/javascripts/ace/mode-hjson.js +13 -6
  86. data/vendor/assets/javascripts/ace/mode-html.js +159 -133
  87. data/vendor/assets/javascripts/ace/mode-html_elixir.js +162 -136
  88. data/vendor/assets/javascripts/ace/mode-html_ruby.js +160 -134
  89. data/vendor/assets/javascripts/ace/mode-ini.js +8 -1
  90. data/vendor/assets/javascripts/ace/mode-io.js +12 -5
  91. data/vendor/assets/javascripts/ace/mode-jack.js +10 -3
  92. data/vendor/assets/javascripts/ace/mode-jade.js +271 -375
  93. data/vendor/assets/javascripts/ace/mode-java.js +108 -7
  94. data/vendor/assets/javascripts/ace/mode-javascript.js +13 -5
  95. data/vendor/assets/javascripts/ace/mode-json.js +10 -3
  96. data/vendor/assets/javascripts/ace/mode-jsoniq.js +24 -12
  97. data/vendor/assets/javascripts/ace/mode-jsp.js +59 -15
  98. data/vendor/assets/javascripts/ace/mode-jssm.js +325 -0
  99. data/vendor/assets/javascripts/ace/mode-jsx.js +11 -4
  100. data/vendor/assets/javascripts/ace/mode-julia.js +12 -5
  101. data/vendor/assets/javascripts/ace/mode-kotlin.js +16 -7
  102. data/vendor/assets/javascripts/ace/mode-latex.js +87 -15
  103. data/vendor/assets/javascripts/ace/mode-less.js +47 -27
  104. data/vendor/assets/javascripts/ace/mode-liquid.js +2026 -472
  105. data/vendor/assets/javascripts/ace/mode-lisp.js +9 -2
  106. data/vendor/assets/javascripts/ace/mode-livescript.js +10 -2
  107. data/vendor/assets/javascripts/ace/mode-logiql.js +10 -3
  108. data/vendor/assets/javascripts/ace/mode-logtalk.js +352 -0
  109. data/vendor/assets/javascripts/ace/mode-lsl.js +10 -3
  110. data/vendor/assets/javascripts/ace/mode-lua.js +9 -2
  111. data/vendor/assets/javascripts/ace/mode-luapage.js +160 -134
  112. data/vendor/assets/javascripts/ace/mode-lucene.js +36 -20
  113. data/vendor/assets/javascripts/ace/mode-makefile.js +10 -3
  114. data/vendor/assets/javascripts/ace/mode-markdown.js +523 -200
  115. data/vendor/assets/javascripts/ace/mode-mask.js +100 -83
  116. data/vendor/assets/javascripts/ace/mode-matlab.js +8 -1
  117. data/vendor/assets/javascripts/ace/mode-maze.js +10 -3
  118. data/vendor/assets/javascripts/ace/mode-mel.js +11 -4
  119. data/vendor/assets/javascripts/ace/mode-mixal.js +122 -0
  120. data/vendor/assets/javascripts/ace/mode-mushcode.js +9 -2
  121. data/vendor/assets/javascripts/ace/mode-mysql.js +11 -4
  122. data/vendor/assets/javascripts/ace/mode-nix.js +22 -7
  123. data/vendor/assets/javascripts/ace/mode-nsis.js +15 -8
  124. data/vendor/assets/javascripts/ace/mode-objectivec.js +23 -8
  125. data/vendor/assets/javascripts/ace/mode-ocaml.js +8 -1
  126. data/vendor/assets/javascripts/ace/mode-pascal.js +9 -2
  127. data/vendor/assets/javascripts/ace/mode-perl.js +10 -3
  128. data/vendor/assets/javascripts/ace/mode-perl6.js +593 -0
  129. data/vendor/assets/javascripts/ace/mode-pgsql.js +314 -71
  130. data/vendor/assets/javascripts/ace/mode-php.js +1037 -994
  131. data/vendor/assets/javascripts/ace/mode-php_laravel_blade.js +13100 -0
  132. data/vendor/assets/javascripts/ace/mode-pig.js +13 -6
  133. data/vendor/assets/javascripts/ace/mode-plain_text.js +8 -1
  134. data/vendor/assets/javascripts/ace/mode-powershell.js +10 -3
  135. data/vendor/assets/javascripts/ace/mode-praat.js +17 -7
  136. data/vendor/assets/javascripts/ace/mode-prolog.js +12 -5
  137. data/vendor/assets/javascripts/ace/mode-properties.js +8 -1
  138. data/vendor/assets/javascripts/ace/mode-protobuf.js +22 -7
  139. data/vendor/assets/javascripts/ace/mode-puppet.js +369 -0
  140. data/vendor/assets/javascripts/ace/mode-python.js +305 -63
  141. data/vendor/assets/javascripts/ace/mode-r.js +14 -4
  142. data/vendor/assets/javascripts/ace/mode-razor.js +162 -136
  143. data/vendor/assets/javascripts/ace/mode-rdoc.js +41 -3
  144. data/vendor/assets/javascripts/ace/mode-red.js +450 -0
  145. data/vendor/assets/javascripts/ace/mode-redshift.js +360 -0
  146. data/vendor/assets/javascripts/ace/mode-rhtml.js +159 -133
  147. data/vendor/assets/javascripts/ace/mode-rst.js +8 -1
  148. data/vendor/assets/javascripts/ace/mode-ruby.js +9 -2
  149. data/vendor/assets/javascripts/ace/mode-rust.js +16 -7
  150. data/vendor/assets/javascripts/ace/mode-sass.js +211 -116
  151. data/vendor/assets/javascripts/ace/mode-scad.js +11 -4
  152. data/vendor/assets/javascripts/ace/mode-scala.js +13 -5
  153. data/vendor/assets/javascripts/ace/mode-scheme.js +9 -2
  154. data/vendor/assets/javascripts/ace/mode-scss.js +412 -125
  155. data/vendor/assets/javascripts/ace/mode-sh.js +11 -4
  156. data/vendor/assets/javascripts/ace/mode-sjs.js +15 -7
  157. data/vendor/assets/javascripts/ace/mode-slim.js +4641 -0
  158. data/vendor/assets/javascripts/ace/mode-smarty.js +161 -135
  159. data/vendor/assets/javascripts/ace/mode-snippets.js +23 -16
  160. data/vendor/assets/javascripts/ace/mode-soy_template.js +161 -135
  161. data/vendor/assets/javascripts/ace/mode-space.js +8 -1
  162. data/vendor/assets/javascripts/ace/mode-sparql.js +13 -6
  163. data/vendor/assets/javascripts/ace/mode-sql.js +9 -2
  164. data/vendor/assets/javascripts/ace/mode-sqlserver.js +11 -4
  165. data/vendor/assets/javascripts/ace/mode-stylus.js +20 -10
  166. data/vendor/assets/javascripts/ace/mode-svg.js +26 -13
  167. data/vendor/assets/javascripts/ace/mode-swift.js +15 -8
  168. data/vendor/assets/javascripts/ace/mode-tcl.js +10 -3
  169. data/vendor/assets/javascripts/ace/mode-terraform.js +397 -0
  170. data/vendor/assets/javascripts/ace/mode-tex.js +8 -1
  171. data/vendor/assets/javascripts/ace/mode-text.js +8 -0
  172. data/vendor/assets/javascripts/ace/mode-textile.js +8 -1
  173. data/vendor/assets/javascripts/ace/mode-toml.js +9 -2
  174. data/vendor/assets/javascripts/ace/mode-tsx.js +27 -31
  175. data/vendor/assets/javascripts/ace/mode-turtle.js +13 -6
  176. data/vendor/assets/javascripts/ace/mode-twig.js +160 -134
  177. data/vendor/assets/javascripts/ace/mode-typescript.js +27 -31
  178. data/vendor/assets/javascripts/ace/mode-vala.js +13 -6
  179. data/vendor/assets/javascripts/ace/mode-vbscript.js +9 -2
  180. data/vendor/assets/javascripts/ace/mode-velocity.js +159 -133
  181. data/vendor/assets/javascripts/ace/mode-verilog.js +19 -5
  182. data/vendor/assets/javascripts/ace/mode-vhdl.js +8 -1
  183. data/vendor/assets/javascripts/ace/mode-visualforce.js +2637 -0
  184. data/vendor/assets/javascripts/ace/mode-wollok.js +15 -8
  185. data/vendor/assets/javascripts/ace/mode-xml.js +21 -9
  186. data/vendor/assets/javascripts/ace/mode-xquery.js +24 -12
  187. data/vendor/assets/javascripts/ace/mode-yaml.js +15 -5
  188. data/vendor/assets/javascripts/ace/theme-ambiance.js +8 -6
  189. data/vendor/assets/javascripts/ace/theme-chaos.js +8 -1
  190. data/vendor/assets/javascripts/ace/theme-chrome.js +8 -1
  191. data/vendor/assets/javascripts/ace/theme-clouds.js +8 -1
  192. data/vendor/assets/javascripts/ace/theme-clouds_midnight.js +8 -1
  193. data/vendor/assets/javascripts/ace/theme-cobalt.js +8 -1
  194. data/vendor/assets/javascripts/ace/theme-crimson_editor.js +8 -1
  195. data/vendor/assets/javascripts/ace/theme-dawn.js +8 -1
  196. data/vendor/assets/javascripts/ace/theme-dracula.js +135 -0
  197. data/vendor/assets/javascripts/ace/theme-dreamweaver.js +8 -1
  198. data/vendor/assets/javascripts/ace/theme-eclipse.js +8 -1
  199. data/vendor/assets/javascripts/ace/theme-github.js +8 -1
  200. data/vendor/assets/javascripts/ace/theme-gob.js +8 -1
  201. data/vendor/assets/javascripts/ace/theme-gruvbox.js +8 -1
  202. data/vendor/assets/javascripts/ace/theme-idle_fingers.js +8 -1
  203. data/vendor/assets/javascripts/ace/theme-iplastic.js +8 -1
  204. data/vendor/assets/javascripts/ace/theme-katzenmilch.js +8 -1
  205. data/vendor/assets/javascripts/ace/theme-kr_theme.js +8 -1
  206. data/vendor/assets/javascripts/ace/theme-kuroir.js +8 -1
  207. data/vendor/assets/javascripts/ace/theme-merbivore.js +8 -1
  208. data/vendor/assets/javascripts/ace/theme-merbivore_soft.js +8 -1
  209. data/vendor/assets/javascripts/ace/theme-mono_industrial.js +8 -1
  210. data/vendor/assets/javascripts/ace/theme-monokai.js +8 -1
  211. data/vendor/assets/javascripts/ace/theme-pastel_on_dark.js +8 -1
  212. data/vendor/assets/javascripts/ace/theme-solarized_dark.js +8 -1
  213. data/vendor/assets/javascripts/ace/theme-solarized_light.js +9 -2
  214. data/vendor/assets/javascripts/ace/theme-sqlserver.js +8 -1
  215. data/vendor/assets/javascripts/ace/theme-terminal.js +8 -1
  216. data/vendor/assets/javascripts/ace/theme-textmate.js +9 -1
  217. data/vendor/assets/javascripts/ace/theme-tomorrow.js +8 -1
  218. data/vendor/assets/javascripts/ace/theme-tomorrow_night.js +8 -1
  219. data/vendor/assets/javascripts/ace/theme-tomorrow_night_blue.js +8 -1
  220. data/vendor/assets/javascripts/ace/theme-tomorrow_night_bright.js +8 -1
  221. data/vendor/assets/javascripts/ace/theme-tomorrow_night_eighties.js +8 -1
  222. data/vendor/assets/javascripts/ace/theme-twilight.js +8 -1
  223. data/vendor/assets/javascripts/ace/theme-vibrant_ink.js +8 -1
  224. data/vendor/assets/javascripts/ace/theme-xcode.js +8 -1
  225. data/vendor/assets/javascripts/ace/worker-coffee.js +40 -41
  226. data/vendor/assets/javascripts/ace/worker-css.js +44 -37
  227. data/vendor/assets/javascripts/ace/worker-html.js +40 -37
  228. data/vendor/assets/javascripts/ace/worker-javascript.js +42 -39
  229. data/vendor/assets/javascripts/ace/worker-json.js +41 -36
  230. data/vendor/assets/javascripts/ace/worker-lua.js +41 -37
  231. data/vendor/assets/javascripts/ace/worker-php.js +40 -37
  232. data/vendor/assets/javascripts/ace/worker-xml.js +105 -103
  233. data/vendor/assets/javascripts/ace/worker-xquery.js +39 -36
  234. metadata +27 -4
@@ -1,321 +1,307 @@
1
- define("ace/ext/beautify/php_rules",["require","exports","module","ace/token_iterator"], function(require, exports, module) {
1
+ define("ace/ext/beautify",["require","exports","module","ace/token_iterator"], function(require, exports, module) {
2
2
  "use strict";
3
- var TokenIterator = require("ace/token_iterator").TokenIterator;
4
- exports.newLines = [{
5
- type: 'support.php_tag',
6
- value: '<?php'
7
- }, {
8
- type: 'support.php_tag',
9
- value: '<?'
10
- }, {
11
- type: 'support.php_tag',
12
- value: '?>'
13
- }, {
14
- type: 'paren.lparen',
15
- value: '{',
16
- indent: true
17
- }, {
18
- type: 'paren.rparen',
19
- breakBefore: true,
20
- value: '}',
21
- indent: false
22
- }, {
23
- type: 'paren.rparen',
24
- breakBefore: true,
25
- value: '})',
26
- indent: false,
27
- dontBreak: true
28
- }, {
29
- type: 'comment'
30
- }, {
31
- type: 'text',
32
- value: ';'
33
- }, {
34
- type: 'text',
35
- value: ':',
36
- context: 'php'
37
- }, {
38
- type: 'keyword',
39
- value: 'case',
40
- indent: true,
41
- dontBreak: true
42
- }, {
43
- type: 'keyword',
44
- value: 'default',
45
- indent: true,
46
- dontBreak: true
47
- }, {
48
- type: 'keyword',
49
- value: 'break',
50
- indent: false,
51
- dontBreak: true
52
- }, {
53
- type: 'punctuation.doctype.end',
54
- value: '>'
55
- }, {
56
- type: 'meta.tag.punctuation.end',
57
- value: '>'
58
- }, {
59
- type: 'meta.tag.punctuation.begin',
60
- value: '<',
61
- blockTag: true,
62
- indent: true,
63
- dontBreak: true
64
- }, {
65
- type: 'meta.tag.punctuation.begin',
66
- value: '</',
67
- indent: false,
68
- breakBefore: true,
69
- dontBreak: true
70
- }, {
71
- type: 'punctuation.operator',
72
- value: ';'
73
- }];
3
+ var TokenIterator = require("../token_iterator").TokenIterator;
74
4
 
75
- exports.spaces = [{
76
- type: 'xml-pe',
77
- prepend: true
78
- },{
79
- type: 'entity.other.attribute-name',
80
- prepend: true
81
- }, {
82
- type: 'storage.type',
83
- value: 'var',
84
- append: true
85
- }, {
86
- type: 'storage.type',
87
- value: 'function',
88
- append: true
89
- }, {
90
- type: 'keyword.operator',
91
- value: '='
92
- }, {
93
- type: 'keyword',
94
- value: 'as',
95
- prepend: true,
96
- append: true
97
- }, {
98
- type: 'keyword',
99
- value: 'function',
100
- append: true
101
- }, {
102
- type: 'support.function',
103
- next: /[^\(]/,
104
- append: true
105
- }, {
106
- type: 'keyword',
107
- value: 'or',
108
- append: true,
109
- prepend: true
110
- }, {
111
- type: 'keyword',
112
- value: 'and',
113
- append: true,
114
- prepend: true
115
- }, {
116
- type: 'keyword',
117
- value: 'case',
118
- append: true
119
- }, {
120
- type: 'keyword.operator',
121
- value: '||',
122
- append: true,
123
- prepend: true
124
- }, {
125
- type: 'keyword.operator',
126
- value: '&&',
127
- append: true,
128
- prepend: true
129
- }];
130
- exports.singleTags = ['!doctype','area','base','br','hr','input','img','link','meta'];
5
+ function is(token, type) {
6
+ return token.type.lastIndexOf(type + ".xml") > -1;
7
+ }
8
+ exports.singletonTags = ["area", "base", "br", "col", "command", "embed", "hr", "html", "img", "input", "keygen", "link", "meta", "param", "source", "track", "wbr"];
9
+ 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"];
131
10
 
132
- exports.transform = function(iterator, maxPos, context) {
11
+ exports.beautify = function(session) {
12
+ var iterator = new TokenIterator(session, 0, 0);
133
13
  var token = iterator.getCurrentToken();
134
-
135
- var newLines = exports.newLines;
136
- var spaces = exports.spaces;
137
- var singleTags = exports.singleTags;
138
-
139
- var code = '';
140
-
141
- var indentation = 0;
142
- var dontBreak = false;
143
- var tag;
144
- var lastTag;
145
- var lastToken = {};
146
- var nextTag;
147
- var nextToken = {};
148
- var breakAdded = false;
149
- var value = '';
150
-
151
- while (token!==null) {
152
- console.log(token);
153
-
154
- if( !token ){
155
- token = iterator.stepForward();
156
- continue;
157
- }
158
- if( token.type == 'support.php_tag' && token.value != '?>' ){
159
- context = 'php';
160
- }
161
- else if( token.type == 'support.php_tag' && token.value == '?>' ){
162
- context = 'html';
163
- }
164
- else if( token.type == 'meta.tag.name.style' && context != 'css' ){
165
- context = 'css';
166
- }
167
- else if( token.type == 'meta.tag.name.style' && context == 'css' ){
168
- context = 'html';
169
- }
170
- else if( token.type == 'meta.tag.name.script' && context != 'js' ){
171
- context = 'js';
172
- }
173
- else if( token.type == 'meta.tag.name.script' && context == 'js' ){
174
- context = 'html';
175
- }
14
+ var tabString = session.getTabString();
15
+ var singletonTags = exports.singletonTags;
16
+ var blockTags = exports.blockTags;
17
+ var nextToken;
18
+ var breakBefore = false;
19
+ var spaceBefore = false;
20
+ var spaceAfter = false;
21
+ var code = "";
22
+ var value = "";
23
+ var tagName = "";
24
+ var depth = 0;
25
+ var lastDepth = 0;
26
+ var lastIndent = 0;
27
+ var indent = 0;
28
+ var unindent = 0;
29
+ var roundDepth = 0;
30
+ var curlyDepth = 0;
31
+ var row;
32
+ var curRow = 0;
33
+ var rowsToAdd = 0;
34
+ var rowTokens = [];
35
+ var abort = false;
36
+ var i;
37
+ var indentNextLine = false;
38
+ var inTag = false;
39
+ var inCSS = false;
40
+ var inBlock = false;
41
+ var levels = {0: 0};
42
+ var parents = [];
176
43
 
44
+ var trimNext = function() {
45
+ if (nextToken && nextToken.value && nextToken.type !== 'string.regexp')
46
+ nextToken.value = nextToken.value.trim();
47
+ };
48
+
49
+ var trimLine = function() {
50
+ code = code.replace(/ +$/, "");
51
+ };
52
+
53
+ var trimCode = function() {
54
+ code = code.trimRight();
55
+ breakBefore = false;
56
+ };
57
+
58
+ while (token !== null) {
59
+ curRow = iterator.getCurrentTokenRow();
60
+ rowTokens = iterator.$rowTokens;
177
61
  nextToken = iterator.stepForward();
178
- if (nextToken && nextToken.type.indexOf('meta.tag.name') == 0) {
179
- nextTag = nextToken.value;
180
- }
181
- if ( lastToken.type == 'support.php_tag' && lastToken.value == '<?=') {
182
- dontBreak = true;
183
- }
184
- if (token.type == 'meta.tag.name') {
185
- token.value = token.value.toLowerCase();
186
- }
187
- if (token.type == 'text') {
188
- token.value = token.value.trim();
189
- }
190
- if (!token.value) {
191
- token = nextToken;
192
- continue;
193
- }
194
- value = token.value;
195
- for (var i in spaces) {
196
- if (
197
- token.type == spaces[i].type &&
198
- (!spaces[i].value || token.value == spaces[i].value) &&
199
- (
200
- nextToken &&
201
- (!spaces[i].next || spaces[i].next.test(nextToken.value))
202
- )
203
- ) {
204
- if (spaces[i].prepend) {
205
- value = ' ' + token.value;
206
- }
207
62
 
208
- if (spaces[i].append) {
209
- value += ' ';
63
+ if (typeof token !== "undefined") {
64
+ value = token.value;
65
+ unindent = 0;
66
+ inCSS = (tagName === "style" || session.$modeId === "ace/mode/css");
67
+ if (is(token, "tag-open")) {
68
+ inTag = true;
69
+ if (nextToken)
70
+ inBlock = (blockTags.indexOf(nextToken.value) !== -1);
71
+ if (value === "</") {
72
+ if (inBlock && !breakBefore && rowsToAdd < 1)
73
+ rowsToAdd++;
74
+
75
+ if (inCSS)
76
+ rowsToAdd = 1;
77
+
78
+ unindent = 1;
79
+ inBlock = false;
210
80
  }
81
+ } else if (is(token, "tag-close")) {
82
+ inTag = false;
83
+ } else if (is(token, "comment.start")) {
84
+ inBlock = true;
85
+ } else if (is(token, "comment.end")) {
86
+ inBlock = false;
211
87
  }
212
- }
213
- if (token.type.indexOf('meta.tag.name') == 0) {
214
- tag = token.value;
215
- }
216
- breakAdded = false;
217
- for (i in newLines) {
218
- if (
219
- token.type == newLines[i].type &&
220
- (
221
- !newLines[i].value ||
222
- token.value == newLines[i].value
223
- ) &&
224
- (
225
- !newLines[i].blockTag ||
226
- singleTags.indexOf(nextTag) === -1
227
- ) &&
228
- (
229
- !newLines[i].context ||
230
- newLines[i].context === context
231
- )
232
- ) {
233
- if (newLines[i].indent === false) {
234
- indentation--;
235
- }
88
+ if (!inTag && !rowsToAdd && token.type === "paren.rparen" && token.value.substr(0, 1) === "}") {
89
+ rowsToAdd++;
90
+ }
91
+ if (curRow !== row) {
92
+ rowsToAdd = curRow;
236
93
 
237
- if (
238
- newLines[i].breakBefore &&
239
- ( !newLines[i].prev || newLines[i].prev.test(lastToken.value) )
240
- ) {
94
+ if (row)
95
+ rowsToAdd -= row;
96
+ }
97
+
98
+ if (rowsToAdd) {
99
+ trimCode();
100
+ for (; rowsToAdd > 0; rowsToAdd--)
241
101
  code += "\n";
242
- breakAdded = true;
243
- for (i = 0; i < indentation; i++) {
244
- code += "\t";
245
- }
246
- }
247
102
 
248
- break;
103
+ breakBefore = true;
104
+ if (!is(token, "comment") && !token.type.match(/^(comment|string)$/))
105
+ value = value.trimLeft();
249
106
  }
250
- }
251
107
 
252
- if (dontBreak===false) {
253
- for (i in newLines) {
254
- if (
255
- lastToken.type == newLines[i].type &&
256
- (
257
- !newLines[i].value || lastToken.value == newLines[i].value
258
- ) &&
259
- (
260
- !newLines[i].blockTag ||
261
- singleTags.indexOf(tag) === -1
262
- ) &&
263
- (
264
- !newLines[i].context ||
265
- newLines[i].context === context
266
- )
267
- ) {
268
- if (newLines[i].indent === true) {
269
- indentation++;
108
+ if (value) {
109
+ if (token.type === "keyword" && value.match(/^(if|else|elseif|for|foreach|while|switch)$/)) {
110
+ parents[depth] = value;
111
+
112
+ trimNext();
113
+ spaceAfter = true;
114
+ if (value.match(/^(else|elseif)$/)) {
115
+ if (code.match(/\}[\s]*$/)) {
116
+ trimCode();
117
+ spaceBefore = true;
118
+ }
270
119
  }
120
+ } else if (token.type === "paren.lparen") {
121
+ trimNext();
122
+ if (value.substr(-1) === "{") {
123
+ spaceAfter = true;
124
+ indentNextLine = false;
271
125
 
272
- if (!newLines[i].dontBreak && !breakAdded) {
273
- code += "\n";
274
- for (i = 0; i < indentation; i++) {
275
- code += "\t";
126
+ if(!inTag)
127
+ rowsToAdd = 1;
128
+ }
129
+ if (value.substr(0, 1) === "{") {
130
+ spaceBefore = true;
131
+ if (code.substr(-1) !== '[' && code.trimRight().substr(-1) === '[') {
132
+ trimCode();
133
+ spaceBefore = false;
134
+ } else if (code.trimRight().substr(-1) === ')') {
135
+ trimCode();
136
+ } else {
137
+ trimLine();
276
138
  }
277
139
  }
140
+ } else if (token.type === "paren.rparen") {
141
+ unindent = 1;
142
+ if (value.substr(0, 1) === "}") {
143
+ if (parents[depth-1] === 'case')
144
+ unindent++;
278
145
 
279
- break;
146
+ if (code.trimRight().substr(-1) === '{') {
147
+ trimCode();
148
+ } else {
149
+ spaceBefore = true;
150
+
151
+ if (inCSS)
152
+ rowsToAdd+=2;
153
+ }
154
+ }
155
+ if (value.substr(0, 1) === "]") {
156
+ if (code.substr(-1) !== '}' && code.trimRight().substr(-1) === '}') {
157
+ spaceBefore = false;
158
+ indent++;
159
+ trimCode();
160
+ }
161
+ }
162
+ if (value.substr(0, 1) === ")") {
163
+ if (code.substr(-1) !== '(' && code.trimRight().substr(-1) === '(') {
164
+ spaceBefore = false;
165
+ indent++;
166
+ trimCode();
167
+ }
168
+ }
169
+
170
+ trimLine();
171
+ } else if ((token.type === "keyword.operator" || token.type === "keyword") && value.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/)) {
172
+ trimCode();
173
+ trimNext();
174
+ spaceBefore = true;
175
+ spaceAfter = true;
176
+ } else if (token.type === "punctuation.operator" && value === ';') {
177
+ trimCode();
178
+ trimNext();
179
+ spaceAfter = true;
180
+
181
+ if (inCSS)
182
+ rowsToAdd++;
183
+ } else if (token.type === "punctuation.operator" && value.match(/^(:|,)$/)) {
184
+ trimCode();
185
+ trimNext();
186
+ if (value.match(/^(,)$/) && curlyDepth>0 && roundDepth===0) {
187
+ rowsToAdd++;
188
+ } else {
189
+ spaceAfter = true;
190
+ breakBefore = false;
191
+ }
192
+ } else if (token.type === "support.php_tag" && value === "?>" && !breakBefore) {
193
+ trimCode();
194
+ spaceBefore = true;
195
+ } else if (is(token, "attribute-name") && code.substr(-1).match(/^\s$/)) {
196
+ spaceBefore = true;
197
+ } else if (is(token, "attribute-equals")) {
198
+ trimLine();
199
+ trimNext();
200
+ } else if (is(token, "tag-close")) {
201
+ trimLine();
202
+ if(value === "/>")
203
+ spaceBefore = true;
280
204
  }
281
- }
282
- }
205
+ if (breakBefore && !(token.type.match(/^(comment)$/) && !value.substr(0, 1).match(/^[/#]$/)) && !(token.type.match(/^(string)$/) && !value.substr(0, 1).match(/^['"]$/))) {
283
206
 
284
- code += value;
285
- if ( lastToken.type == 'support.php_tag' && lastToken.value == '?>' ) {
286
- dontBreak = false;
287
- }
288
- lastTag = tag;
207
+ indent = lastIndent;
289
208
 
290
- lastToken = token;
209
+ if(depth > lastDepth) {
210
+ indent++;
291
211
 
292
- token = nextToken;
212
+ for (i=depth; i > lastDepth; i--)
213
+ levels[i] = indent;
214
+ } else if(depth < lastDepth)
215
+ indent = levels[depth];
293
216
 
294
- if (token===null) {
295
- break;
296
- }
297
- }
298
-
299
- return code;
300
- };
217
+ lastDepth = depth;
218
+ lastIndent = indent;
301
219
 
220
+ if(unindent)
221
+ indent -= unindent;
302
222
 
223
+ if (indentNextLine && !roundDepth) {
224
+ indent++;
225
+ indentNextLine = false;
226
+ }
303
227
 
304
- });
228
+ for (i = 0; i < indent; i++)
229
+ code += tabString;
230
+ }
305
231
 
306
- define("ace/ext/beautify",["require","exports","module","ace/token_iterator","ace/ext/beautify/php_rules"], function(require, exports, module) {
307
- "use strict";
308
- var TokenIterator = require("ace/token_iterator").TokenIterator;
309
232
 
310
- var phpTransform = require("./beautify/php_rules").transform;
233
+ if (token.type === "keyword" && value.match(/^(case|default)$/)) {
234
+ parents[depth] = value;
235
+ depth++;
236
+ }
311
237
 
312
- exports.beautify = function(session) {
313
- var iterator = new TokenIterator(session, 0, 0);
314
- var token = iterator.getCurrentToken();
315
238
 
316
- var context = session.$modeId.split("/").pop();
239
+ if (token.type === "keyword" && value.match(/^(break)$/)) {
240
+ if(parents[depth-1] && parents[depth-1].match(/^(case|default)$/)) {
241
+ depth--;
242
+ }
243
+ }
244
+ if (token.type === "paren.lparen") {
245
+ roundDepth += (value.match(/\(/g) || []).length;
246
+ curlyDepth += (value.match(/\{/g) || []).length;
247
+ depth += value.length;
248
+ }
249
+
250
+ if (token.type === "keyword" && value.match(/^(if|else|elseif|for|while)$/)) {
251
+ indentNextLine = true;
252
+ roundDepth = 0;
253
+ } else if (!roundDepth && value.trim() && token.type !== "comment")
254
+ indentNextLine = false;
255
+
256
+ if (token.type === "paren.rparen") {
257
+ roundDepth -= (value.match(/\)/g) || []).length;
258
+ curlyDepth -= (value.match(/\}/g) || []).length;
259
+
260
+ for (i = 0; i < value.length; i++) {
261
+ depth--;
262
+ if(value.substr(i, 1)==='}' && parents[depth]==='case') {
263
+ depth--;
264
+ }
265
+ }
266
+ }
267
+ if (spaceBefore && !breakBefore) {
268
+ trimLine();
269
+ if (code.substr(-1) !== "\n")
270
+ code += " ";
271
+ }
272
+
273
+ code += value;
274
+
275
+ if (spaceAfter)
276
+ code += " ";
277
+
278
+ breakBefore = false;
279
+ spaceBefore = false;
280
+ spaceAfter = false;
281
+ if ((is(token, "tag-close") && (inBlock || blockTags.indexOf(tagName) !== -1)) || (is(token, "doctype") && value === ">")) {
282
+ if (inBlock && nextToken && nextToken.value === "</")
283
+ rowsToAdd = -1;
284
+ else
285
+ rowsToAdd = 1;
286
+ }
287
+ if (is(token, "tag-open") && value === "</") {
288
+ depth--;
289
+ } else if (is(token, "tag-open") && value === "<" && singletonTags.indexOf(nextToken.value) === -1) {
290
+ depth++;
291
+ } else if (is(token, "tag-name")) {
292
+ tagName = value;
293
+ } else if (is(token, "tag-close") && value === "/>" && singletonTags.indexOf(tagName) === -1){
294
+ depth--;
295
+ }
296
+
297
+ row = curRow;
298
+ }
299
+ }
317
300
 
318
- var code = phpTransform(iterator, context);
301
+ token = nextToken;
302
+ }
303
+
304
+ code = code.trim();
319
305
  session.doc.setValue(code);
320
306
  };
321
307
 
@@ -325,10 +311,13 @@ exports.commands = [{
325
311
  exports.beautify(editor.session);
326
312
  },
327
313
  bindKey: "Ctrl-Shift-B"
328
- }]
314
+ }];
329
315
 
330
- });
331
- (function() {
332
- window.require(["ace/ext/beautify"], function() {});
316
+ }); (function() {
317
+ window.require(["ace/ext/beautify"], function(m) {
318
+ if (typeof module == "object" && typeof exports == "object" && module) {
319
+ module.exports = m;
320
+ }
321
+ });
333
322
  })();
334
323