/script-kiddie/002_script_kiddie/script-kiddie/node_modules/ace-builds/src-noconflict/ext-beautify.js |
@@ -0,0 +1,334 @@ |
ace.define("ace/ext/beautify/php_rules",["require","exports","module","ace/token_iterator"], function(require, exports, module) { |
"use strict"; |
var TokenIterator = require("ace/token_iterator").TokenIterator; |
exports.newLines = [{ |
type: 'support.php_tag', |
value: '<?php' |
}, { |
type: 'support.php_tag', |
value: '<?' |
}, { |
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: '</', |
indent: false, |
breakBefore: true, |
dontBreak: true |
}, { |
type: 'punctuation.operator', |
value: ';' |
}]; |
|
exports.spaces = [{ |
type: 'xml-pe', |
prepend: true |
},{ |
type: 'entity.other.attribute-name', |
prepend: true |
}, { |
type: 'storage.type', |
value: 'var', |
append: true |
}, { |
type: 'storage.type', |
value: 'function', |
append: true |
}, { |
type: 'keyword.operator', |
value: '=' |
}, { |
type: 'keyword', |
value: 'as', |
prepend: true, |
append: true |
}, { |
type: 'keyword', |
value: 'function', |
append: true |
}, { |
type: 'support.function', |
next: /[^\(]/, |
append: true |
}, { |
type: 'keyword', |
value: 'or', |
append: true, |
prepend: true |
}, { |
type: 'keyword', |
value: 'and', |
append: true, |
prepend: true |
}, { |
type: 'keyword', |
value: 'case', |
append: true |
}, { |
type: 'keyword.operator', |
value: '||', |
append: true, |
prepend: true |
}, { |
type: 'keyword.operator', |
value: '&&', |
append: true, |
prepend: true |
}]; |
exports.singleTags = ['!doctype','area','base','br','hr','input','img','link','meta']; |
|
exports.transform = function(iterator, maxPos, context) { |
var token = iterator.getCurrentToken(); |
|
var newLines = exports.newLines; |
var spaces = exports.spaces; |
var singleTags = exports.singleTags; |
|
var code = ''; |
|
var indentation = 0; |
var dontBreak = false; |
var tag; |
var lastTag; |
var lastToken = {}; |
var nextTag; |
var nextToken = {}; |
var breakAdded = false; |
var value = ''; |
|
while (token!==null) { |
console.log(token); |
|
if( !token ){ |
token = iterator.stepForward(); |
continue; |
} |
if( token.type == 'support.php_tag' && token.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 = true; |
} |
if (token.type == 'meta.tag.name') { |
token.value = token.value.toLowerCase(); |
} |
if (token.type == 'text') { |
token.value = token.value.trim(); |
} |
if (!token.value) { |
token = nextToken; |
continue; |
} |
value = token.value; |
for (var i in spaces) { |
if ( |
token.type == spaces[i].type && |
(!spaces[i].value || token.value == spaces[i].value) && |
( |
nextToken && |
(!spaces[i].next || spaces[i].next.test(nextToken.value)) |
) |
) { |
if (spaces[i].prepend) { |
value = ' ' + token.value; |
} |
|
if (spaces[i].append) { |
value += ' '; |
} |
} |
} |
if (token.type.indexOf('meta.tag.name') == 0) { |
tag = token.value; |
} |
breakAdded = false; |
for (i in newLines) { |
if ( |
token.type == newLines[i].type && |
( |
!newLines[i].value || |
token.value == newLines[i].value |
) && |
( |
!newLines[i].blockTag || |
singleTags.indexOf(nextTag) === -1 |
) && |
( |
!newLines[i].context || |
newLines[i].context === context |
) |
) { |
if (newLines[i].indent === false) { |
indentation--; |
} |
|
if ( |
newLines[i].breakBefore && |
( !newLines[i].prev || newLines[i].prev.test(lastToken.value) ) |
) { |
code += "\n"; |
breakAdded = true; |
for (i = 0; i < indentation; i++) { |
code += "\t"; |
} |
} |
|
break; |
} |
} |
|
if (dontBreak===false) { |
for (i in newLines) { |
if ( |
lastToken.type == newLines[i].type && |
( |
!newLines[i].value || lastToken.value == newLines[i].value |
) && |
( |
!newLines[i].blockTag || |
singleTags.indexOf(tag) === -1 |
) && |
( |
!newLines[i].context || |
newLines[i].context === context |
) |
) { |
if (newLines[i].indent === true) { |
indentation++; |
} |
|
if (!newLines[i].dontBreak && !breakAdded) { |
code += "\n"; |
for (i = 0; i < indentation; i++) { |
code += "\t"; |
} |
} |
|
break; |
} |
} |
} |
|
code += value; |
if ( lastToken.type == 'support.php_tag' && lastToken.value == '?>' ) { |
dontBreak = false; |
} |
lastTag = tag; |
|
lastToken = token; |
|
token = nextToken; |
|
if (token===null) { |
break; |
} |
} |
|
return code; |
}; |
|
|
|
}); |
|
ace.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) { |
var iterator = new TokenIterator(session, 0, 0); |
var token = iterator.getCurrentToken(); |
|
var context = session.$modeId.split("/").pop(); |
|
var code = phpTransform(iterator, context); |
session.doc.setValue(code); |
}; |
|
exports.commands = [{ |
name: "beautify", |
exec: function(editor) { |
exports.beautify(editor.session); |
}, |
bindKey: "Ctrl-Shift-B" |
}] |
|
}); |
(function() { |
ace.require(["ace/ext/beautify"], function() {}); |
})(); |
|