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 === ' 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 === '' && 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 } }) })()