| ace.define( |
| 'ace/ext/beautify', |
| ['require', 'exports', 'module', 'ace/token_iterator'], |
| function (e, t, n) { |
| 'use strict' |
| function i(e, t) { |
| return e.type.lastIndexOf(t + '.xml') > -1 |
| } |
| var r = e('../token_iterator').TokenIterator |
| ;(t.singletonTags = [ |
| 'area', |
| 'base', |
| 'br', |
| 'col', |
| 'command', |
| 'embed', |
| 'hr', |
| 'html', |
| 'img', |
| 'input', |
| 'keygen', |
| 'link', |
| 'meta', |
| 'param', |
| 'source', |
| 'track', |
| 'wbr', |
| ]), |
| (t.blockTags = [ |
| 'article', |
| 'aside', |
| 'blockquote', |
| 'body', |
| 'div', |
| 'dl', |
| 'fieldset', |
| 'footer', |
| 'form', |
| 'head', |
| 'header', |
| 'html', |
| 'nav', |
| 'ol', |
| 'p', |
| 'script', |
| 'section', |
| 'style', |
| 'table', |
| 'tbody', |
| 'tfoot', |
| 'thead', |
| 'ul', |
| ]), |
| (t.beautify = function (e) { |
| var n = new r(e, 0, 0), |
| s = n.getCurrentToken(), |
| o = e.getTabString(), |
| u = t.singletonTags, |
| a = t.blockTags, |
| f, |
| l = !1, |
| c = !1, |
| h = !1, |
| p = '', |
| d = '', |
| v = '', |
| m = 0, |
| g = 0, |
| y = 0, |
| b = 0, |
| w = 0, |
| E = 0, |
| S = 0, |
| x, |
| T = 0, |
| N = 0, |
| C = [], |
| k = !1, |
| L, |
| A = !1, |
| O = !1, |
| M = !1, |
| _ = !1, |
| D = { 0: 0 }, |
| P = [], |
| H = function () { |
| f && f.value && f.type !== 'string.regexp' && (f.value = f.value.replace(/^\s*/, '')) |
| }, |
| B = function () { |
| p = p.replace(/ +$/, '') |
| }, |
| j = function () { |
| ;(p = p.trimRight()), (l = !1) |
| } |
| while (s !== null) { |
| ;(T = n.getCurrentTokenRow()), (C = n.$rowTokens), (f = n.stepForward()) |
| if (typeof s != 'undefined') { |
| ;(d = s.value), |
| (w = 0), |
| (M = v === 'style' || e.$modeId === 'ace/mode/css'), |
| i(s, 'tag-open') |
| ? ((O = !0), |
| f && (_ = a.indexOf(f.value) !== -1), |
| d === '</' && (_ && !l && N < 1 && N++, M && (N = 1), (w = 1), (_ = !1))) |
| : i(s, 'tag-close') |
| ? (O = !1) |
| : i(s, 'comment.start') |
| ? (_ = !0) |
| : i(s, 'comment.end') && (_ = !1), |
| !O && !N && s.type === 'paren.rparen' && s.value.substr(0, 1) === '}' && N++, |
| T !== x && ((N = T), x && (N -= x)) |
| if (N) { |
| j() |
| for (; N > 0; N--) p += '\n' |
| ;(l = !0), |
| !i(s, 'comment') && !s.type.match(/^(comment|string)$/) && (d = d.trimLeft()) |
| } |
| if (d) { |
| s.type === 'keyword' && d.match(/^(if|else|elseif|for|foreach|while|switch)$/) |
| ? ((P[m] = d), |
| H(), |
| (h = !0), |
| d.match(/^(else|elseif)$/) && p.match(/\}[\s]*$/) && (j(), (c = !0))) |
| : s.type === 'paren.lparen' |
| ? (H(), |
| d.substr(-1) === '{' && ((h = !0), (A = !1), O || (N = 1)), |
| d.substr(0, 1) === '{' && |
| ((c = !0), |
| p.substr(-1) !== '[' && p.trimRight().substr(-1) === '[' |
| ? (j(), (c = !1)) |
| : p.trimRight().substr(-1) === ')' |
| ? j() |
| : B())) |
| : s.type === 'paren.rparen' |
| ? ((w = 1), |
| d.substr(0, 1) === '}' && |
| (P[m - 1] === 'case' && w++, |
| p.trimRight().substr(-1) === '{' ? j() : ((c = !0), M && (N += 2))), |
| d.substr(0, 1) === ']' && |
| p.substr(-1) !== '}' && |
| p.trimRight().substr(-1) === '}' && |
| ((c = !1), b++, j()), |
| d.substr(0, 1) === ')' && |
| p.substr(-1) !== '(' && |
| p.trimRight().substr(-1) === '(' && |
| ((c = !1), b++, j()), |
| B()) |
| : (s.type !== 'keyword.operator' && s.type !== 'keyword') || |
| !d.match(/^(=|==|===|!=|!==|&&|\|\||and|or|xor|\+=|.=|>|>=|<|<=|=>)$/) |
| ? s.type === 'punctuation.operator' && d === ';' |
| ? (j(), H(), (h = !0), M && N++) |
| : s.type === 'punctuation.operator' && d.match(/^(:|,)$/) |
| ? (j(), |
| H(), |
| d.match(/^(,)$/) && S > 0 && E === 0 ? N++ : ((h = !0), (l = !1))) |
| : s.type === 'support.php_tag' && d === '?>' && !l |
| ? (j(), (c = !0)) |
| : i(s, 'attribute-name') && p.substr(-1).match(/^\s$/) |
| ? (c = !0) |
| : i(s, 'attribute-equals') |
| ? (B(), H()) |
| : i(s, 'tag-close') && (B(), d === '/>' && (c = !0)) |
| : (j(), H(), (c = !0), (h = !0)) |
| if ( |
| l && |
| (!s.type.match(/^(comment)$/) || !!d.substr(0, 1).match(/^[/#]$/)) && |
| (!s.type.match(/^(string)$/) || !!d.substr(0, 1).match(/^['"]$/)) |
| ) { |
| b = y |
| if (m > g) { |
| b++ |
| for (L = m; L > g; L--) D[L] = b |
| } else m < g && (b = D[m]) |
| ;(g = m), (y = b), w && (b -= w), A && !E && (b++, (A = !1)) |
| for (L = 0; L < b; L++) p += o |
| } |
| s.type === 'keyword' && d.match(/^(case|default)$/) && ((P[m] = d), m++), |
| s.type === 'keyword' && |
| d.match(/^(break)$/) && |
| P[m - 1] && |
| P[m - 1].match(/^(case|default)$/) && |
| m--, |
| s.type === 'paren.lparen' && |
| ((E += (d.match(/\(/g) || []).length), |
| (S += (d.match(/\{/g) || []).length), |
| (m += d.length)), |
| s.type === 'keyword' && d.match(/^(if|else|elseif|for|while)$/) |
| ? ((A = !0), (E = 0)) |
| : !E && d.trim() && s.type !== 'comment' && (A = !1) |
| if (s.type === 'paren.rparen') { |
| ;(E -= (d.match(/\)/g) || []).length), (S -= (d.match(/\}/g) || []).length) |
| for (L = 0; L < d.length; L++) m--, d.substr(L, 1) === '}' && P[m] === 'case' && m-- |
| } |
| s.type == 'text' && (d = d.replace(/\s+$/, ' ')), |
| c && !l && (B(), p.substr(-1) !== '\n' && (p += ' ')), |
| (p += d), |
| h && (p += ' '), |
| (l = !1), |
| (c = !1), |
| (h = !1) |
| if ( |
| (i(s, 'tag-close') && (_ || a.indexOf(v) !== -1)) || |
| (i(s, 'doctype') && d === '>') |
| ) |
| _ && f && f.value === '</' ? (N = -1) : (N = 1) |
| i(s, 'tag-open') && d === '</' |
| ? m-- |
| : i(s, 'tag-open') && d === '<' && u.indexOf(f.value) === -1 |
| ? m++ |
| : i(s, 'tag-name') |
| ? (v = d) |
| : i(s, 'tag-close') && d === '/>' && u.indexOf(v) === -1 && m--, |
| (x = T) |
| } |
| } |
| s = f |
| } |
| ;(p = p.trim()), e.doc.setValue(p) |
| }), |
| (t.commands = [ |
| { |
| name: 'beautify', |
| description: 'Format selection (Beautify)', |
| exec: function (e) { |
| t.beautify(e.session) |
| }, |
| bindKey: 'Ctrl-Shift-B', |
| }, |
| ]) |
| } |
| ) |
| ;(function () { |
| ace.require(['ace/ext/beautify'], function (m) { |
| if (typeof module == 'object' && typeof exports == 'object' && module) { |
| module.exports = m |
| } |
| }) |
| })() |
|
|