|
|
ace.define("ace/mode/yaml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"], function(acequire, exports, module) { "use strict";
var oop = acequire("../lib/oop"); var TextHighlightRules = acequire("./text_highlight_rules").TextHighlightRules;
var YamlHighlightRules = function() { this.$rules = { "start" : [ { token : "comment", regex : "#.*$" }, { token : "list.markup", regex : /^(?:-{3}|\.{3})\s*(?=#|$)/ }, { token : "list.markup", regex : /^\s*[\-?](?:$|\s)/ }, { token: "constant", regex: "!![\\w//]+" }, { token: "constant.language", regex: "[&\\*][a-zA-Z0-9-_]+" }, { token: ["meta.tag", "keyword"], regex: /^(\s*\w.*?)(:(?=\s|$))/ },{ token: ["meta.tag", "keyword"], regex: /(\w+?)(\s*:(?=\s|$))/ }, { token : "keyword.operator", regex : "<<\\w*:\\w*" }, { token : "keyword.operator", regex : "-\\s*(?=[{])" }, { token : "string", // single line
regex : '["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]' }, { token : "string", // multi line string start
regex : /[|>][-+\d\s]*$/, onMatch: function(val, state, stack, line) { var indent = /^\s*/.exec(line)[0]; if (stack.length < 1) { stack.push(this.next); } else { stack[0] = "mlString"; }
if (stack.length < 2) { stack.push(indent.length); } else { stack[1] = indent.length; } return this.token; }, next : "mlString" }, { token : "string", // single quoted string
regex : "['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']" }, { token : "constant.numeric", // float
regex : /(\b|[+\-\.])[\d_]+(?:(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)(?=[^\d-\w]|$)/ }, { token : "constant.numeric", // other number
regex : /[+\-]?\.inf\b|NaN\b|0x[\dA-Fa-f_]+|0b[10_]+/ }, { token : "constant.language.boolean", regex : "\\b(?:true|false|TRUE|FALSE|True|False|yes|no)\\b" }, { token : "paren.lparen", regex : "[[({]" }, { token : "paren.rparen", regex : "[\\])}]" }, { token : "text", regex : /[^\s,:\[\]\{\}]+/ } ], "mlString" : [ { token : "indent", regex : /^\s*$/ }, { token : "indent", regex : /^\s*/, onMatch: function(val, state, stack) { var curIndent = stack[1];
if (curIndent >= val.length) { this.next = "start"; stack.splice(0); } else { this.next = "mlString"; } return this.token; }, next : "mlString" }, { token : "string", regex : '.+' } ]}; this.normalizeRules();
};
oop.inherits(YamlHighlightRules, TextHighlightRules);
exports.YamlHighlightRules = YamlHighlightRules; });
ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"], function(acequire, exports, module) { "use strict";
var Range = acequire("../range").Range;
var MatchingBraceOutdent = function() {};
(function() {
this.checkOutdent = function(line, input) { if (! /^\s+$/.test(line)) return false;
return /^\s*\}/.test(input); };
this.autoOutdent = function(doc, row) { var line = doc.getLine(row); var match = line.match(/^(\s*\})/);
if (!match) return 0;
var column = match[1].length; var openBracePos = doc.findMatchingBracket({row: row, column: column});
if (!openBracePos || openBracePos.row == row) return 0;
var indent = this.$getIndent(doc.getLine(openBracePos.row)); doc.replace(new Range(row, 0, row, column-1), indent); };
this.$getIndent = function(line) { return line.match(/^\s*/)[0]; };
}).call(MatchingBraceOutdent.prototype);
exports.MatchingBraceOutdent = MatchingBraceOutdent; });
ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"], function(acequire, exports, module) { "use strict";
var oop = acequire("../../lib/oop"); var BaseFoldMode = acequire("./fold_mode").FoldMode; var Range = acequire("../../range").Range;
var FoldMode = exports.FoldMode = function() {}; oop.inherits(FoldMode, BaseFoldMode);
(function() {
this.getFoldWidgetRange = function(session, foldStyle, row) { var range = this.indentationBlock(session, row); if (range) return range;
var re = /\S/; var line = session.getLine(row); var startLevel = line.search(re); if (startLevel == -1 || line[startLevel] != "#") return;
var startColumn = line.length; var maxRow = session.getLength(); var startRow = row; var endRow = row;
while (++row < maxRow) { line = session.getLine(row); var level = line.search(re);
if (level == -1) continue;
if (line[level] != "#") break;
endRow = row; }
if (endRow > startRow) { var endColumn = session.getLine(endRow).length; return new Range(startRow, startColumn, endRow, endColumn); } }; this.getFoldWidget = function(session, foldStyle, row) { var line = session.getLine(row); var indent = line.search(/\S/); var next = session.getLine(row + 1); var prev = session.getLine(row - 1); var prevIndent = prev.search(/\S/); var nextIndent = next.search(/\S/);
if (indent == -1) { session.foldWidgets[row - 1] = prevIndent!= -1 && prevIndent < nextIndent ? "start" : ""; return ""; } if (prevIndent == -1) { if (indent == nextIndent && line[indent] == "#" && next[indent] == "#") { session.foldWidgets[row - 1] = ""; session.foldWidgets[row + 1] = ""; return "start"; } } else if (prevIndent == indent && line[indent] == "#" && prev[indent] == "#") { if (session.getLine(row - 2).search(/\S/) == -1) { session.foldWidgets[row - 1] = "start"; session.foldWidgets[row + 1] = ""; return ""; } }
if (prevIndent!= -1 && prevIndent < indent) session.foldWidgets[row - 1] = "start"; else session.foldWidgets[row - 1] = "";
if (indent < nextIndent) return "start"; else return ""; };
}).call(FoldMode.prototype);
});
ace.define("ace/mode/yaml",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/yaml_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/coffee"], function(acequire, exports, module) { "use strict";
var oop = acequire("../lib/oop"); var TextMode = acequire("./text").Mode; var YamlHighlightRules = acequire("./yaml_highlight_rules").YamlHighlightRules; var MatchingBraceOutdent = acequire("./matching_brace_outdent").MatchingBraceOutdent; var FoldMode = acequire("./folding/coffee").FoldMode;
var Mode = function() { this.HighlightRules = YamlHighlightRules; this.$outdent = new MatchingBraceOutdent(); this.foldingRules = new FoldMode(); this.$behaviour = this.$defaultBehaviour; }; oop.inherits(Mode, TextMode);
(function() {
this.lineCommentStart = ["#", "//"]; this.getNextLineIndent = function(state, line, tab) { var indent = this.$getIndent(line);
if (state == "start") { var match = line.match(/^.*[\{\(\[]\s*$/); if (match) { indent += tab; } }
return indent; };
this.checkOutdent = function(state, line, input) { return this.$outdent.checkOutdent(line, input); };
this.autoOutdent = function(state, doc, row) { this.$outdent.autoOutdent(doc, row); };
this.$id = "ace/mode/yaml"; }).call(Mode.prototype);
exports.Mode = Mode;
});
|