/script-kiddie/002_script_kiddie/script-kiddie/node_modules/ace-builds/src/mode-asciidoc.js |
@@ -0,0 +1,342 @@ |
define("ace/mode/asciidoc_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 AsciidocHighlightRules = function() { |
var identifierRe = "[a-zA-Z\u00a1-\uffff]+\\b"; |
|
this.$rules = { |
"start": [ |
{token: "empty", regex: /$/}, |
{token: "literal", regex: /^\.{4,}\s*$/, next: "listingBlock"}, |
{token: "literal", regex: /^-{4,}\s*$/, next: "literalBlock"}, |
{token: "string", regex: /^\+{4,}\s*$/, next: "passthroughBlock"}, |
{token: "keyword", regex: /^={4,}\s*$/}, |
{token: "text", regex: /^\s*$/}, |
{token: "empty", regex: "", next: "dissallowDelimitedBlock"} |
], |
|
"dissallowDelimitedBlock": [ |
{include: "paragraphEnd"}, |
{token: "comment", regex: '^//.+$'}, |
{token: "keyword", regex: "^(?:NOTE|TIP|IMPORTANT|WARNING|CAUTION):"}, |
|
{include: "listStart"}, |
{token: "literal", regex: /^\s+.+$/, next: "indentedBlock"}, |
{token: "empty", regex: "", next: "text"} |
], |
|
"paragraphEnd": [ |
{token: "doc.comment", regex: /^\/{4,}\s*$/, next: "commentBlock"}, |
{token: "tableBlock", regex: /^\s*[|!]=+\s*$/, next: "tableBlock"}, |
{token: "keyword", regex: /^(?:--|''')\s*$/, next: "start"}, |
{token: "option", regex: /^\[.*\]\s*$/, next: "start"}, |
{token: "pageBreak", regex: /^>{3,}$/, next: "start"}, |
{token: "literal", regex: /^\.{4,}\s*$/, next: "listingBlock"}, |
{token: "titleUnderline", regex: /^(?:={2,}|-{2,}|~{2,}|\^{2,}|\+{2,})\s*$/, next: "start"}, |
{token: "singleLineTitle", regex: /^={1,5}\s+\S.*$/, next: "start"}, |
|
{token: "otherBlock", regex: /^(?:\*{2,}|_{2,})\s*$/, next: "start"}, |
{token: "optionalTitle", regex: /^\.[^.\s].+$/, next: "start"} |
], |
|
"listStart": [ |
{token: "keyword", regex: /^\s*(?:\d+\.|[a-zA-Z]\.|[ixvmIXVM]+\)|\*{1,5}|-|\.{1,5})\s/, next: "listText"}, |
{token: "meta.tag", regex: /^.+(?::{2,4}|;;)(?: |$)/, next: "listText"}, |
{token: "support.function.list.callout", regex: /^(?:<\d+>|\d+>|>) /, next: "text"}, |
{token: "keyword", regex: /^\+\s*$/, next: "start"} |
], |
|
"text": [ |
{token: ["link", "variable.language"], regex: /((?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+)(\[.*?\])/}, |
{token: "link", regex: /(?:https?:\/\/|ftp:\/\/|file:\/\/|mailto:|callto:)[^\s\[]+/}, |
{token: "link", regex: /\b[\w\.\/\-]+@[\w\.\/\-]+\b/}, |
{include: "macros"}, |
{include: "paragraphEnd"}, |
{token: "literal", regex:/\+{3,}/, next:"smallPassthrough"}, |
{token: "escape", regex: /\((?:C|TM|R)\)|\.{3}|->|<-|=>|<=|&#(?:\d+|x[a-fA-F\d]+);|(?: |^)--(?=\s+\S)/}, |
{token: "escape", regex: /\\[_*'`+#]|\\{2}[_*'`+#]{2}/}, |
{token: "keyword", regex: /\s\+$/}, |
{token: "text", regex: identifierRe}, |
{token: ["keyword", "string", "keyword"], |
regex: /(<<[\w\d\-$]+,)(.*?)(>>|$)/}, |
{token: "keyword", regex: /<<[\w\d\-$]+,?|>>/}, |
{token: "constant.character", regex: /\({2,3}.*?\){2,3}/}, |
{token: "keyword", regex: /\[\[.+?\]\]/}, |
{token: "support", regex: /^\[{3}[\w\d =\-]+\]{3}/}, |
|
{include: "quotes"}, |
{token: "empty", regex: /^\s*$/, next: "start"} |
], |
|
"listText": [ |
{include: "listStart"}, |
{include: "text"} |
], |
|
"indentedBlock": [ |
{token: "literal", regex: /^[\s\w].+$/, next: "indentedBlock"}, |
{token: "literal", regex: "", next: "start"} |
], |
|
"listingBlock": [ |
{token: "literal", regex: /^\.{4,}\s*$/, next: "dissallowDelimitedBlock"}, |
{token: "constant.numeric", regex: '<\\d+>'}, |
{token: "literal", regex: '[^<]+'}, |
{token: "literal", regex: '<'} |
], |
"literalBlock": [ |
{token: "literal", regex: /^-{4,}\s*$/, next: "dissallowDelimitedBlock"}, |
{token: "constant.numeric", regex: '<\\d+>'}, |
{token: "literal", regex: '[^<]+'}, |
{token: "literal", regex: '<'} |
], |
"passthroughBlock": [ |
{token: "literal", regex: /^\+{4,}\s*$/, next: "dissallowDelimitedBlock"}, |
{token: "literal", regex: identifierRe + "|\\d+"}, |
{include: "macros"}, |
{token: "literal", regex: "."} |
], |
|
"smallPassthrough": [ |
{token: "literal", regex: /[+]{3,}/, next: "dissallowDelimitedBlock"}, |
{token: "literal", regex: /^\s*$/, next: "dissallowDelimitedBlock"}, |
{token: "literal", regex: identifierRe + "|\\d+"}, |
{include: "macros"} |
], |
|
"commentBlock": [ |
{token: "doc.comment", regex: /^\/{4,}\s*$/, next: "dissallowDelimitedBlock"}, |
{token: "doc.comment", regex: '^.*$'} |
], |
"tableBlock": [ |
{token: "tableBlock", regex: /^\s*\|={3,}\s*$/, next: "dissallowDelimitedBlock"}, |
{token: "tableBlock", regex: /^\s*!={3,}\s*$/, next: "innerTableBlock"}, |
{token: "tableBlock", regex: /\|/}, |
{include: "text", noEscape: true} |
], |
"innerTableBlock": [ |
{token: "tableBlock", regex: /^\s*!={3,}\s*$/, next: "tableBlock"}, |
{token: "tableBlock", regex: /^\s*|={3,}\s*$/, next: "dissallowDelimitedBlock"}, |
{token: "tableBlock", regex: /!/} |
], |
"macros": [ |
{token: "macro", regex: /{[\w\-$]+}/}, |
{token: ["text", "string", "text", "constant.character", "text"], regex: /({)([\w\-$]+)(:)?(.+)?(})/}, |
{token: ["text", "markup.list.macro", "keyword", "string"], regex: /(\w+)(footnote(?:ref)?::?)([^\s\[]+)?(\[.*?\])?/}, |
{token: ["markup.list.macro", "keyword", "string"], regex: /([a-zA-Z\-][\w\.\/\-]*::?)([^\s\[]+)(\[.*?\])?/}, |
{token: ["markup.list.macro", "keyword"], regex: /([a-zA-Z\-][\w\.\/\-]+::?)(\[.*?\])/}, |
{token: "keyword", regex: /^:.+?:(?= |$)/} |
], |
|
"quotes": [ |
{token: "string.italic", regex: /__[^_\s].*?__/}, |
{token: "string.italic", regex: quoteRule("_")}, |
|
{token: "keyword.bold", regex: /\*\*[^*\s].*?\*\*/}, |
{token: "keyword.bold", regex: quoteRule("\\*")}, |
|
{token: "literal", regex: quoteRule("\\+")}, |
{token: "literal", regex: /\+\+[^+\s].*?\+\+/}, |
{token: "literal", regex: /\$\$.+?\$\$/}, |
{token: "literal", regex: quoteRule("`")}, |
|
{token: "keyword", regex: quoteRule("^")}, |
{token: "keyword", regex: quoteRule("~")}, |
{token: "keyword", regex: /##?/}, |
{token: "keyword", regex: /(?:\B|^)``|\b''/} |
] |
|
}; |
|
function quoteRule(ch) { |
var prefix = /\w/.test(ch) ? "\\b" : "(?:\\B|^)"; |
return prefix + ch + "[^" + ch + "].*?" + ch + "(?![\\w*])"; |
} |
|
var tokenMap = { |
macro: "constant.character", |
tableBlock: "doc.comment", |
titleUnderline: "markup.heading", |
singleLineTitle: "markup.heading", |
pageBreak: "string", |
option: "string.regexp", |
otherBlock: "markup.list", |
literal: "support.function", |
optionalTitle: "constant.numeric", |
escape: "constant.language.escape", |
link: "markup.underline.list" |
}; |
|
for (var state in this.$rules) { |
var stateRules = this.$rules[state]; |
for (var i = stateRules.length; i--; ) { |
var rule = stateRules[i]; |
if (rule.include || typeof rule == "string") { |
var args = [i, 1].concat(this.$rules[rule.include || rule]); |
if (rule.noEscape) { |
args = args.filter(function(x) { |
return !x.next; |
}); |
} |
stateRules.splice.apply(stateRules, args); |
} else if (rule.token in tokenMap) { |
rule.token = tokenMap[rule.token]; |
} |
} |
} |
}; |
oop.inherits(AsciidocHighlightRules, TextHighlightRules); |
|
exports.AsciidocHighlightRules = AsciidocHighlightRules; |
}); |
|
define("ace/mode/folding/asciidoc",["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.foldingStartMarker = /^(?:\|={10,}|[\.\/=\-~^+]{4,}\s*$|={1,5} )/; |
this.singleLineHeadingRe = /^={1,5}(?=\s+\S)/; |
|
this.getFoldWidget = function(session, foldStyle, row) { |
var line = session.getLine(row); |
if (!this.foldingStartMarker.test(line)) |
return "" |
|
if (line[0] == "=") { |
if (this.singleLineHeadingRe.test(line)) |
return "start"; |
if (session.getLine(row - 1).length != session.getLine(row).length) |
return ""; |
return "start"; |
} |
if (session.bgTokenizer.getState(row) == "dissallowDelimitedBlock") |
return "end"; |
return "start"; |
}; |
|
this.getFoldWidgetRange = function(session, foldStyle, row) { |
var line = session.getLine(row); |
var startColumn = line.length; |
var maxRow = session.getLength(); |
var startRow = row; |
var endRow = row; |
if (!line.match(this.foldingStartMarker)) |
return; |
|
var token; |
function getTokenType(row) { |
token = session.getTokens(row)[0]; |
return token && token.type; |
} |
|
var levels = ["=","-","~","^","+"]; |
var heading = "markup.heading"; |
var singleLineHeadingRe = this.singleLineHeadingRe; |
function getLevel() { |
var match = token.value.match(singleLineHeadingRe); |
if (match) |
return match[0].length; |
var level = levels.indexOf(token.value[0]) + 1; |
if (level == 1) { |
if (session.getLine(row - 1).length != session.getLine(row).length) |
return Infinity; |
} |
return level; |
} |
|
if (getTokenType(row) == heading) { |
var startHeadingLevel = getLevel(); |
while (++row < maxRow) { |
if (getTokenType(row) != heading) |
continue; |
var level = getLevel(); |
if (level <= startHeadingLevel) |
break; |
} |
|
var isSingleLineHeading = token && token.value.match(this.singleLineHeadingRe); |
endRow = isSingleLineHeading ? row - 1 : row - 2; |
|
if (endRow > startRow) { |
while (endRow > startRow && (!getTokenType(endRow) || token.value[0] == "[")) |
endRow--; |
} |
|
if (endRow > startRow) { |
var endColumn = session.getLine(endRow).length; |
return new Range(startRow, startColumn, endRow, endColumn); |
} |
} else { |
var state = session.bgTokenizer.getState(row); |
if (state == "dissallowDelimitedBlock") { |
while (row -- > 0) { |
if (session.bgTokenizer.getState(row).lastIndexOf("Block") == -1) |
break; |
} |
endRow = row + 1; |
if (endRow < startRow) { |
var endColumn = session.getLine(row).length; |
return new Range(endRow, 5, startRow, startColumn - 5); |
} |
} else { |
while (++row < maxRow) { |
if (session.bgTokenizer.getState(row) == "dissallowDelimitedBlock") |
break; |
} |
endRow = row; |
if (endRow > startRow) { |
var endColumn = session.getLine(row).length; |
return new Range(startRow, 5, endRow, endColumn - 5); |
} |
} |
} |
}; |
|
}).call(FoldMode.prototype); |
|
}); |
|
define("ace/mode/asciidoc",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/asciidoc_highlight_rules","ace/mode/folding/asciidoc"], function(require, exports, module) { |
"use strict"; |
|
var oop = require("../lib/oop"); |
var TextMode = require("./text").Mode; |
var AsciidocHighlightRules = require("./asciidoc_highlight_rules").AsciidocHighlightRules; |
var AsciidocFoldMode = require("./folding/asciidoc").FoldMode; |
|
var Mode = function() { |
this.HighlightRules = AsciidocHighlightRules; |
|
this.foldingRules = new AsciidocFoldMode(); |
}; |
oop.inherits(Mode, TextMode); |
|
(function() { |
this.type = "text"; |
this.getNextLineIndent = function(state, line, tab) { |
if (state == "listblock") { |
var match = /^((?:.+)?)([-+*][ ]+)/.exec(line); |
if (match) { |
return new Array(match[1].length + 1).join(" ") + match[2]; |
} else { |
return ""; |
} |
} else { |
return this.$getIndent(line); |
} |
}; |
this.$id = "ace/mode/asciidoc"; |
}).call(Mode.prototype); |
|
exports.Mode = Mode; |
}); |