3353 lines
167 KiB
JavaScript
3353 lines
167 KiB
JavaScript
(function() {
|
||
var root = this, modules, require_from, register, error;
|
||
if (typeof global == "undefined") {
|
||
var global;
|
||
if (typeof window != "undefined") {
|
||
global = window;
|
||
} else {
|
||
global = {};
|
||
}
|
||
}
|
||
modules = {};
|
||
require_from = function(parent, from) {
|
||
return function(name) {
|
||
if (modules[from] && modules[from][name]) {
|
||
modules[from][name].parent = parent;
|
||
if (modules[from][name].initialize) {
|
||
modules[from][name].initialize();
|
||
}
|
||
return modules[from][name].exports;
|
||
} else {
|
||
return error(name, from);
|
||
}
|
||
};
|
||
};
|
||
register = function(names, directory, callback) {
|
||
var module = {
|
||
exports: {},
|
||
initialize: function() {
|
||
callback.call(module.exports, global, module, module.exports, require_from(module, directory), undefined);
|
||
delete module.initialize;
|
||
},
|
||
parent: null
|
||
};
|
||
for (var from in names) {
|
||
modules[from] = modules[from] || {};
|
||
for (var j in names[from]) {
|
||
var name = names[from][j];
|
||
modules[from][name] = module;
|
||
}
|
||
}
|
||
};
|
||
error = function anonymous(name, from) {
|
||
var message = "Warn: could not find module " + name;
|
||
console.log(message);
|
||
};
|
||
register({
|
||
"0": [ "./events" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) {
|
||
for (var key in parent) {
|
||
if (__hasProp.call(parent, key)) child[key] = parent[key];
|
||
}
|
||
function ctor() {
|
||
this.constructor = child;
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child;
|
||
};
|
||
this.Event = function() {
|
||
function Event(start_mark, end_mark) {
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
}
|
||
return Event;
|
||
}();
|
||
this.NodeEvent = function(_super) {
|
||
__extends(NodeEvent, _super);
|
||
function NodeEvent(anchor, start_mark, end_mark) {
|
||
this.anchor = anchor;
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
}
|
||
return NodeEvent;
|
||
}(this.Event);
|
||
this.CollectionStartEvent = function(_super) {
|
||
__extends(CollectionStartEvent, _super);
|
||
function CollectionStartEvent(anchor, tag, implicit, start_mark, end_mark) {
|
||
this.anchor = anchor;
|
||
this.tag = tag;
|
||
this.implicit = implicit;
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
}
|
||
return CollectionStartEvent;
|
||
}(this.NodeEvent);
|
||
this.CollectionEndEvent = function(_super) {
|
||
__extends(CollectionEndEvent, _super);
|
||
function CollectionEndEvent() {
|
||
_ref = CollectionEndEvent.__super__.constructor.apply(this, arguments);
|
||
return _ref;
|
||
}
|
||
return CollectionEndEvent;
|
||
}(this.Event);
|
||
this.StreamStartEvent = function(_super) {
|
||
__extends(StreamStartEvent, _super);
|
||
function StreamStartEvent(start_mark, end_mark, explicit, version, tags) {
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
this.explicit = explicit;
|
||
this.version = version;
|
||
this.tags = tags;
|
||
}
|
||
return StreamStartEvent;
|
||
}(this.Event);
|
||
this.StreamEndEvent = function(_super) {
|
||
__extends(StreamEndEvent, _super);
|
||
function StreamEndEvent() {
|
||
_ref1 = StreamEndEvent.__super__.constructor.apply(this, arguments);
|
||
return _ref1;
|
||
}
|
||
return StreamEndEvent;
|
||
}(this.Event);
|
||
this.DocumentStartEvent = function(_super) {
|
||
__extends(DocumentStartEvent, _super);
|
||
function DocumentStartEvent(start_mark, end_mark, explicit, version, tags) {
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
this.explicit = explicit;
|
||
this.version = version;
|
||
this.tags = tags;
|
||
}
|
||
return DocumentStartEvent;
|
||
}(this.Event);
|
||
this.DocumentEndEvent = function(_super) {
|
||
__extends(DocumentEndEvent, _super);
|
||
function DocumentEndEvent(start_mark, end_mark, explicit) {
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
this.explicit = explicit;
|
||
}
|
||
return DocumentEndEvent;
|
||
}(this.Event);
|
||
this.AliasEvent = function(_super) {
|
||
__extends(AliasEvent, _super);
|
||
function AliasEvent() {
|
||
_ref2 = AliasEvent.__super__.constructor.apply(this, arguments);
|
||
return _ref2;
|
||
}
|
||
return AliasEvent;
|
||
}(this.NodeEvent);
|
||
this.ScalarEvent = function(_super) {
|
||
__extends(ScalarEvent, _super);
|
||
function ScalarEvent(anchor, tag, implicit, value, start_mark, end_mark, style) {
|
||
this.anchor = anchor;
|
||
this.tag = tag;
|
||
this.implicit = implicit;
|
||
this.value = value;
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
this.style = style;
|
||
}
|
||
return ScalarEvent;
|
||
}(this.NodeEvent);
|
||
this.SequenceStartEvent = function(_super) {
|
||
__extends(SequenceStartEvent, _super);
|
||
function SequenceStartEvent() {
|
||
_ref3 = SequenceStartEvent.__super__.constructor.apply(this, arguments);
|
||
return _ref3;
|
||
}
|
||
return SequenceStartEvent;
|
||
}(this.CollectionStartEvent);
|
||
this.SequenceEndEvent = function(_super) {
|
||
__extends(SequenceEndEvent, _super);
|
||
function SequenceEndEvent() {
|
||
_ref4 = SequenceEndEvent.__super__.constructor.apply(this, arguments);
|
||
return _ref4;
|
||
}
|
||
return SequenceEndEvent;
|
||
}(this.CollectionEndEvent);
|
||
this.MappingStartEvent = function(_super) {
|
||
__extends(MappingStartEvent, _super);
|
||
function MappingStartEvent() {
|
||
_ref5 = MappingStartEvent.__super__.constructor.apply(this, arguments);
|
||
return _ref5;
|
||
}
|
||
return MappingStartEvent;
|
||
}(this.CollectionStartEvent);
|
||
this.MappingEndEvent = function(_super) {
|
||
__extends(MappingEndEvent, _super);
|
||
function MappingEndEvent() {
|
||
_ref6 = MappingEndEvent.__super__.constructor.apply(this, arguments);
|
||
return _ref6;
|
||
}
|
||
return MappingEndEvent;
|
||
}(this.CollectionEndEvent);
|
||
}).call(this);
|
||
});
|
||
register({
|
||
"0": [ "./errors" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var __indexOf = [].indexOf || function(item) {
|
||
for (var i = 0, l = this.length; i < l; i++) {
|
||
if (i in this && this[i] === item) return i;
|
||
}
|
||
return -1;
|
||
}, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) {
|
||
for (var key in parent) {
|
||
if (__hasProp.call(parent, key)) child[key] = parent[key];
|
||
}
|
||
function ctor() {
|
||
this.constructor = child;
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child;
|
||
};
|
||
this.Mark = function() {
|
||
function Mark(name, line, column, buffer, pointer) {
|
||
this.name = name;
|
||
this.line = line;
|
||
this.column = column;
|
||
this.buffer = buffer;
|
||
this.pointer = pointer;
|
||
}
|
||
Mark.prototype.get_snippet = function(indent, max_length) {
|
||
var break_chars, end, head, start, tail, _ref, _ref1;
|
||
if (indent == null) {
|
||
indent = 4;
|
||
}
|
||
if (max_length == null) {
|
||
max_length = 75;
|
||
}
|
||
if (this.buffer == null) {
|
||
return null;
|
||
}
|
||
break_chars = "\0\r\n
\u2028\u2029";
|
||
head = "";
|
||
start = this.pointer;
|
||
while (start > 0 && (_ref = this.buffer[start - 1], __indexOf.call(break_chars, _ref) < 0)) {
|
||
start--;
|
||
if (this.pointer - start > max_length / 2 - 1) {
|
||
head = " ... ";
|
||
start += 5;
|
||
break;
|
||
}
|
||
}
|
||
tail = "";
|
||
end = this.pointer;
|
||
while (end < this.buffer.length && (_ref1 = this.buffer[end], __indexOf.call(break_chars, _ref1) < 0)) {
|
||
end++;
|
||
if (end - this.pointer > max_length / 2 - 1) {
|
||
tail = " ... ";
|
||
end -= 5;
|
||
break;
|
||
}
|
||
}
|
||
return "" + (new Array(indent)).join(" ") + head + this.buffer.slice(start, end) + tail + "\n" + (new Array(indent + this.pointer - start + head.length)).join(" ") + "^";
|
||
};
|
||
Mark.prototype.toString = function() {
|
||
var snippet, where;
|
||
snippet = this.get_snippet();
|
||
where = ' in "' + this.name + '", line ' + (this.line + 1) + ", column " + (this.column + 1);
|
||
if (snippet) {
|
||
return where;
|
||
} else {
|
||
return "" + where + ":\n" + snippet;
|
||
}
|
||
};
|
||
return Mark;
|
||
}();
|
||
this.YAMLError = function(_super) {
|
||
__extends(YAMLError, _super);
|
||
function YAMLError() {
|
||
YAMLError.__super__.constructor.call(this);
|
||
this.stack = this.toString() + "\n" + (new Error).stack.split("\n").slice(1).join("\n");
|
||
}
|
||
return YAMLError;
|
||
}(Error);
|
||
this.MarkedYAMLError = function(_super) {
|
||
__extends(MarkedYAMLError, _super);
|
||
function MarkedYAMLError(context, context_mark, problem, problem_mark, note) {
|
||
this.context = context;
|
||
this.context_mark = context_mark;
|
||
this.problem = problem;
|
||
this.problem_mark = problem_mark;
|
||
this.note = note;
|
||
MarkedYAMLError.__super__.constructor.call(this);
|
||
}
|
||
MarkedYAMLError.prototype.toString = function() {
|
||
var lines;
|
||
lines = [];
|
||
if (this.context != null) {
|
||
lines.push(this.context);
|
||
}
|
||
if (this.context_mark != null && (this.problem == null || this.problem_mark == null || this.context_mark.name !== this.problem_mark.name || this.context_mark.line !== this.problem_mark.line || this.context_mark.column !== this.problem_mark.column)) {
|
||
lines.push(this.context_mark.toString());
|
||
}
|
||
if (this.problem != null) {
|
||
lines.push(this.problem);
|
||
}
|
||
if (this.problem_mark != null) {
|
||
lines.push(this.problem_mark.toString());
|
||
}
|
||
if (this.note != null) {
|
||
lines.push(this.note);
|
||
}
|
||
return lines.join("\n");
|
||
};
|
||
return MarkedYAMLError;
|
||
}(this.YAMLError);
|
||
}).call(this);
|
||
});
|
||
register({
|
||
"0": [ "./nodes" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var unique_id, _ref, _ref1, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) {
|
||
for (var key in parent) {
|
||
if (__hasProp.call(parent, key)) child[key] = parent[key];
|
||
}
|
||
function ctor() {
|
||
this.constructor = child;
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child;
|
||
};
|
||
unique_id = 0;
|
||
this.Node = function() {
|
||
function Node(tag, value, start_mark, end_mark) {
|
||
this.tag = tag;
|
||
this.value = value;
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
this.unique_id = "node_" + unique_id++;
|
||
}
|
||
return Node;
|
||
}();
|
||
this.ScalarNode = function(_super) {
|
||
__extends(ScalarNode, _super);
|
||
ScalarNode.prototype.id = "scalar";
|
||
function ScalarNode(tag, value, start_mark, end_mark, style) {
|
||
this.tag = tag;
|
||
this.value = value;
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
this.style = style;
|
||
ScalarNode.__super__.constructor.apply(this, arguments);
|
||
}
|
||
return ScalarNode;
|
||
}(this.Node);
|
||
this.CollectionNode = function(_super) {
|
||
__extends(CollectionNode, _super);
|
||
function CollectionNode(tag, value, start_mark, end_mark, flow_style) {
|
||
this.tag = tag;
|
||
this.value = value;
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
this.flow_style = flow_style;
|
||
CollectionNode.__super__.constructor.apply(this, arguments);
|
||
}
|
||
return CollectionNode;
|
||
}(this.Node);
|
||
this.SequenceNode = function(_super) {
|
||
__extends(SequenceNode, _super);
|
||
function SequenceNode() {
|
||
_ref = SequenceNode.__super__.constructor.apply(this, arguments);
|
||
return _ref;
|
||
}
|
||
SequenceNode.prototype.id = "sequence";
|
||
return SequenceNode;
|
||
}(this.CollectionNode);
|
||
this.MappingNode = function(_super) {
|
||
__extends(MappingNode, _super);
|
||
function MappingNode() {
|
||
_ref1 = MappingNode.__super__.constructor.apply(this, arguments);
|
||
return _ref1;
|
||
}
|
||
MappingNode.prototype.id = "mapping";
|
||
return MappingNode;
|
||
}(this.CollectionNode);
|
||
}).call(this);
|
||
});
|
||
register({
|
||
"0": [ "./composer" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var MarkedYAMLError, events, nodes, _ref, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) {
|
||
for (var key in parent) {
|
||
if (__hasProp.call(parent, key)) child[key] = parent[key];
|
||
}
|
||
function ctor() {
|
||
this.constructor = child;
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child;
|
||
};
|
||
events = require("./events");
|
||
MarkedYAMLError = require("./errors").MarkedYAMLError;
|
||
nodes = require("./nodes");
|
||
this.ComposerError = function(_super) {
|
||
__extends(ComposerError, _super);
|
||
function ComposerError() {
|
||
_ref = ComposerError.__super__.constructor.apply(this, arguments);
|
||
return _ref;
|
||
}
|
||
return ComposerError;
|
||
}(MarkedYAMLError);
|
||
this.Composer = function() {
|
||
function Composer() {
|
||
this.anchors = {};
|
||
}
|
||
Composer.prototype.check_node = function() {
|
||
if (this.check_event(events.StreamStartEvent)) {
|
||
this.get_event();
|
||
}
|
||
return !this.check_event(events.StreamEndEvent);
|
||
};
|
||
Composer.prototype.get_node = function() {
|
||
if (!this.check_event(events.StreamEndEvent)) {
|
||
return this.compose_document();
|
||
}
|
||
};
|
||
Composer.prototype.get_single_node = function() {
|
||
var document, event;
|
||
this.get_event();
|
||
document = null;
|
||
if (!this.check_event(events.StreamEndEvent)) {
|
||
document = this.compose_document();
|
||
}
|
||
if (!this.check_event(events.StreamEndEvent)) {
|
||
event = this.get_event();
|
||
throw new exports.ComposerError("expected a single document in the stream", document.start_mark, "but found another document", event.start_mark);
|
||
}
|
||
this.get_event();
|
||
return document;
|
||
};
|
||
Composer.prototype.compose_document = function() {
|
||
var node;
|
||
this.get_event();
|
||
node = this.compose_node();
|
||
this.get_event();
|
||
this.anchors = {};
|
||
return node;
|
||
};
|
||
Composer.prototype.compose_node = function(parent, index) {
|
||
var anchor, event, node;
|
||
if (this.check_event(events.AliasEvent)) {
|
||
event = this.get_event();
|
||
anchor = event.anchor;
|
||
if (!(anchor in this.anchors)) {
|
||
throw new exports.ComposerError(null, null, "found undefined alias " + anchor, event.start_mark);
|
||
}
|
||
return this.anchors[anchor];
|
||
}
|
||
event = this.peek_event();
|
||
anchor = event.anchor;
|
||
if (anchor !== null && anchor in this.anchors) {
|
||
throw new exports.ComposerError("found duplicate anchor " + anchor + "; first occurence", this.anchors[anchor].start_mark, "second occurrence", event.start_mark);
|
||
}
|
||
this.descend_resolver(parent, index);
|
||
if (this.check_event(events.ScalarEvent)) {
|
||
node = this.compose_scalar_node(anchor);
|
||
} else if (this.check_event(events.SequenceStartEvent)) {
|
||
node = this.compose_sequence_node(anchor);
|
||
} else if (this.check_event(events.MappingStartEvent)) {
|
||
node = this.compose_mapping_node(anchor);
|
||
}
|
||
this.ascend_resolver();
|
||
return node;
|
||
};
|
||
Composer.prototype.compose_scalar_node = function(anchor) {
|
||
var event, node, tag;
|
||
event = this.get_event();
|
||
tag = event.tag;
|
||
if (tag === null || tag === "!") {
|
||
tag = this.resolve(nodes.ScalarNode, event.value, event.implicit);
|
||
}
|
||
node = new nodes.ScalarNode(tag, event.value, event.start_mark, event.end_mark, event.style);
|
||
if (anchor !== null) {
|
||
this.anchors[anchor] = node;
|
||
}
|
||
return node;
|
||
};
|
||
Composer.prototype.compose_sequence_node = function(anchor) {
|
||
var end_event, index, node, start_event, tag;
|
||
start_event = this.get_event();
|
||
tag = start_event.tag;
|
||
if (tag === null || tag === "!") {
|
||
tag = this.resolve(nodes.SequenceNode, null, start_event.implicit);
|
||
}
|
||
node = new nodes.SequenceNode(tag, [], start_event.start_mark, null, start_event.flow_style);
|
||
if (anchor !== null) {
|
||
this.anchors[anchor] = node;
|
||
}
|
||
index = 0;
|
||
while (!this.check_event(events.SequenceEndEvent)) {
|
||
node.value.push(this.compose_node(node, index));
|
||
index++;
|
||
}
|
||
end_event = this.get_event();
|
||
node.end_mark = end_event.end_mark;
|
||
return node;
|
||
};
|
||
Composer.prototype.compose_mapping_node = function(anchor) {
|
||
var end_event, item_key, item_value, node, start_event, tag;
|
||
start_event = this.get_event();
|
||
tag = start_event.tag;
|
||
if (tag === null || tag === "!") {
|
||
tag = this.resolve(nodes.MappingNode, null, start_event.implicit);
|
||
}
|
||
node = new nodes.MappingNode(tag, [], start_event.start_mark, null, start_event.flow_style);
|
||
if (anchor !== null) {
|
||
this.anchors[anchor] = node;
|
||
}
|
||
while (!this.check_event(events.MappingEndEvent)) {
|
||
item_key = this.compose_node(node);
|
||
item_value = this.compose_node(node, item_key);
|
||
node.value.push([ item_key, item_value ]);
|
||
}
|
||
end_event = this.get_event();
|
||
node.end_mark = end_event.end_mark;
|
||
return node;
|
||
};
|
||
return Composer;
|
||
}();
|
||
}).call(this);
|
||
});
|
||
register({
|
||
"0": [ "./util" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var __slice = [].slice, __hasProp = {}.hasOwnProperty;
|
||
this.extend = function() {
|
||
var destination, k, source, sources, v, _i, _len;
|
||
destination = arguments[0], sources = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
|
||
for (_i = 0, _len = sources.length; _i < _len; _i++) {
|
||
source = sources[_i];
|
||
for (k in source) {
|
||
v = source[k];
|
||
destination[k] = v;
|
||
}
|
||
}
|
||
return destination;
|
||
};
|
||
this.is_empty = function(obj) {
|
||
var key;
|
||
if (Array.isArray(obj) || typeof obj === "string") {
|
||
return obj.length === 0;
|
||
}
|
||
for (key in obj) {
|
||
if (!__hasProp.call(obj, key)) continue;
|
||
return false;
|
||
}
|
||
return true;
|
||
};
|
||
}).call(this);
|
||
});
|
||
register({
|
||
"0": [ "./constructor" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var MarkedYAMLError, nodes, util, _ref, _ref1, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) {
|
||
for (var key in parent) {
|
||
if (__hasProp.call(parent, key)) child[key] = parent[key];
|
||
}
|
||
function ctor() {
|
||
this.constructor = child;
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child;
|
||
}, __indexOf = [].indexOf || function(item) {
|
||
for (var i = 0, l = this.length; i < l; i++) {
|
||
if (i in this && this[i] === item) return i;
|
||
}
|
||
return -1;
|
||
};
|
||
MarkedYAMLError = require("./errors").MarkedYAMLError;
|
||
nodes = require("./nodes");
|
||
util = require("./util");
|
||
this.ConstructorError = function(_super) {
|
||
__extends(ConstructorError, _super);
|
||
function ConstructorError() {
|
||
_ref = ConstructorError.__super__.constructor.apply(this, arguments);
|
||
return _ref;
|
||
}
|
||
return ConstructorError;
|
||
}(MarkedYAMLError);
|
||
this.BaseConstructor = function() {
|
||
BaseConstructor.prototype.yaml_constructors = {};
|
||
BaseConstructor.prototype.yaml_multi_constructors = {};
|
||
BaseConstructor.add_constructor = function(tag, constructor) {
|
||
if (!this.prototype.hasOwnProperty("yaml_constructors")) {
|
||
this.prototype.yaml_constructors = util.extend({}, this.prototype.yaml_constructors);
|
||
}
|
||
return this.prototype.yaml_constructors[tag] = constructor;
|
||
};
|
||
BaseConstructor.add_multi_constructor = function(tag_prefix, multi_constructor) {
|
||
if (!this.prototype.hasOwnProperty("yaml_multi_constructors")) {
|
||
this.prototype.yaml_multi_constructors = util.extend({}, this.prototype.yaml_multi_constructors);
|
||
}
|
||
return this.prototype.yaml_multi_constructors[tag_prefix] = multi_constructor;
|
||
};
|
||
function BaseConstructor() {
|
||
this.constructed_objects = {};
|
||
this.constructing_nodes = [];
|
||
this.deferred_constructors = [];
|
||
}
|
||
BaseConstructor.prototype.check_data = function() {
|
||
return this.check_node();
|
||
};
|
||
BaseConstructor.prototype.get_data = function() {
|
||
if (this.check_node()) {
|
||
return this.construct_document(this.get_node());
|
||
}
|
||
};
|
||
BaseConstructor.prototype.get_single_data = function() {
|
||
var node;
|
||
node = this.get_single_node();
|
||
if (node != null) {
|
||
return this.construct_document(node);
|
||
}
|
||
return null;
|
||
};
|
||
BaseConstructor.prototype.construct_document = function(node) {
|
||
var data;
|
||
data = this.construct_object(node);
|
||
while (!util.is_empty(this.deferred_constructors)) {
|
||
this.deferred_constructors.pop()();
|
||
}
|
||
return data;
|
||
};
|
||
BaseConstructor.prototype.defer = function(f) {
|
||
return this.deferred_constructors.push(f);
|
||
};
|
||
BaseConstructor.prototype.construct_object = function(node) {
|
||
var constructor, object, tag_prefix, tag_suffix, _ref1;
|
||
if (node.unique_id in this.constructed_objects) {
|
||
return this.constructed_objects[node.unique_id];
|
||
}
|
||
if (_ref1 = node.unique_id, __indexOf.call(this.constructing_nodes, _ref1) >= 0) {
|
||
throw new exports.ConstructorError(null, null, "found unconstructable recursive node", node.start_mark);
|
||
}
|
||
this.constructing_nodes.push(node.unique_id);
|
||
constructor = null;
|
||
tag_suffix = null;
|
||
if (node.tag in this.yaml_constructors) {
|
||
constructor = this.yaml_constructors[node.tag];
|
||
} else {
|
||
for (tag_prefix in this.yaml_multi_constructors) {
|
||
if (node.tag.indexOf(tag_prefix === 0)) {
|
||
tag_suffix = node.tag.slice(tag_prefix.length);
|
||
constructor = this.yaml_multi_constructors[tag_prefix];
|
||
break;
|
||
}
|
||
}
|
||
if (constructor == null) {
|
||
if (null in this.yaml_multi_constructors) {
|
||
tag_suffix = node.tag;
|
||
constructor = this.yaml_multi_constructors[null];
|
||
} else if (null in this.yaml_constructors) {
|
||
constructor = this.yaml_constructors[null];
|
||
} else if (node instanceof nodes.ScalarNode) {
|
||
constructor = this.construct_scalar;
|
||
} else if (node instanceof nodes.SequenceNode) {
|
||
constructor = this.construct_sequence;
|
||
} else if (node instanceof nodes.MappingNode) {
|
||
constructor = this.construct_mapping;
|
||
}
|
||
}
|
||
}
|
||
object = constructor.call(this, tag_suffix != null ? tag_suffix : node, node);
|
||
this.constructed_objects[node.unique_id] = object;
|
||
this.constructing_nodes.pop();
|
||
return object;
|
||
};
|
||
BaseConstructor.prototype.construct_scalar = function(node) {
|
||
if (!(node instanceof nodes.ScalarNode)) {
|
||
throw new exports.ConstructorError(null, null, "expected a scalar node but found " + node.id, node.start_mark);
|
||
}
|
||
return node.value;
|
||
};
|
||
BaseConstructor.prototype.construct_sequence = function(node) {
|
||
var child, _i, _len, _ref1, _results;
|
||
if (!(node instanceof nodes.SequenceNode)) {
|
||
throw new exports.ConstructorError(null, null, "expected a sequence node but found " + node.id, node.start_mark);
|
||
}
|
||
_ref1 = node.value;
|
||
_results = [];
|
||
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
|
||
child = _ref1[_i];
|
||
_results.push(this.construct_object(child));
|
||
}
|
||
return _results;
|
||
};
|
||
BaseConstructor.prototype.construct_mapping = function(node) {
|
||
var key, key_node, mapping, value, value_node, _i, _len, _ref1, _ref2;
|
||
if (!(node instanceof nodes.MappingNode)) {
|
||
throw new ConstructorError(null, null, "expected a mapping node but found " + node.id, node.start_mark);
|
||
}
|
||
mapping = {};
|
||
_ref1 = node.value;
|
||
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
|
||
_ref2 = _ref1[_i], key_node = _ref2[0], value_node = _ref2[1];
|
||
key = this.construct_object(key_node);
|
||
if (typeof key === "object") {
|
||
throw new exports.ConstructorError("while constructing a mapping", node.start_mark, "found unhashable key", key_node.start_mark);
|
||
}
|
||
value = this.construct_object(value_node);
|
||
mapping[key] = value;
|
||
}
|
||
return mapping;
|
||
};
|
||
BaseConstructor.prototype.construct_pairs = function(node) {
|
||
var key, key_node, pairs, value, value_node, _i, _len, _ref1, _ref2;
|
||
if (!(node instanceof nodes.MappingNode)) {
|
||
throw new exports.ConstructorError(null, null, "expected a mapping node but found " + node.id, node.start_mark);
|
||
}
|
||
pairs = [];
|
||
_ref1 = node.value;
|
||
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
|
||
_ref2 = _ref1[_i], key_node = _ref2[0], value_node = _ref2[1];
|
||
key = this.construct_object(key_node);
|
||
value = this.construct_object(value_node);
|
||
pairs.push([ key, value ]);
|
||
}
|
||
return pairs;
|
||
};
|
||
return BaseConstructor;
|
||
}();
|
||
this.Constructor = function(_super) {
|
||
var BOOL_VALUES, TIMESTAMP_PARTS, TIMESTAMP_REGEX;
|
||
__extends(Constructor, _super);
|
||
function Constructor() {
|
||
_ref1 = Constructor.__super__.constructor.apply(this, arguments);
|
||
return _ref1;
|
||
}
|
||
BOOL_VALUES = {
|
||
on: true,
|
||
off: false,
|
||
"true": true,
|
||
"false": false,
|
||
yes: true,
|
||
no: false
|
||
};
|
||
TIMESTAMP_REGEX = /^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:(?:[Tt]|[\x20\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\.([0-9]*))?(?:[\x20\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?)?$/;
|
||
TIMESTAMP_PARTS = {
|
||
year: 1,
|
||
month: 2,
|
||
day: 3,
|
||
hour: 4,
|
||
minute: 5,
|
||
second: 6,
|
||
fraction: 7,
|
||
tz: 8,
|
||
tz_sign: 9,
|
||
tz_hour: 10,
|
||
tz_minute: 11
|
||
};
|
||
Constructor.prototype.yaml_constructors = {};
|
||
Constructor.prototype.yaml_multi_constructors = {};
|
||
Constructor.prototype.construct_scalar = function(node) {
|
||
var key_node, value_node, _i, _len, _ref2, _ref3;
|
||
if (node instanceof nodes.MappingNode) {
|
||
_ref2 = node.value;
|
||
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
|
||
_ref3 = _ref2[_i], key_node = _ref3[0], value_node = _ref3[1];
|
||
if (key_node.tag === "tag:yaml.org,2002:value") {
|
||
return this.construct_scalar(value_node);
|
||
}
|
||
}
|
||
}
|
||
return Constructor.__super__.construct_scalar.call(this, node);
|
||
};
|
||
Constructor.prototype.flatten_mapping = function(node) {
|
||
var index, key_node, merge, submerge, subnode, value, value_node, _i, _j, _len, _len1, _ref2, _ref3;
|
||
merge = [];
|
||
index = 0;
|
||
while (index < node.value.length) {
|
||
_ref2 = node.value[index], key_node = _ref2[0], value_node = _ref2[1];
|
||
if (key_node.tag === "tag:yaml.org,2002:merge") {
|
||
node.value.splice(index, 1);
|
||
if (value_node instanceof nodes.MappingNode) {
|
||
this.flatten_mapping(value_node);
|
||
merge = merge.concat(value_node.value);
|
||
} else if (value_node instanceof nodes.SequenceNode) {
|
||
submerge = [];
|
||
_ref3 = value_node.value;
|
||
for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
|
||
subnode = _ref3[_i];
|
||
if (!(subnode instanceof nodes.MappingNode)) {
|
||
throw new exports.ConstructorError("while constructing a mapping", node.start_mark, "expected a mapping for merging, but found " + subnode.id, subnode.start_mark);
|
||
}
|
||
this.flatten_mapping(subnode);
|
||
submerge.push(subnode.value);
|
||
}
|
||
submerge.reverse();
|
||
for (_j = 0, _len1 = submerge.length; _j < _len1; _j++) {
|
||
value = submerge[_j];
|
||
merge = merge.concat(value);
|
||
}
|
||
} else {
|
||
throw new exports.ConstructorError("while constructing a mapping", node.start_mark, "expected a mapping or list of mappings for merging but found " + value_node.id, value_node.start_mark);
|
||
}
|
||
} else if (key_node.tag === "tag:yaml.org,2002:value") {
|
||
key_node.tag = "tag:yaml.org,2002:str";
|
||
index++;
|
||
} else {
|
||
index++;
|
||
}
|
||
}
|
||
if (merge.length) {
|
||
return node.value = merge.concat(node.value);
|
||
}
|
||
};
|
||
Constructor.prototype.construct_mapping = function(node) {
|
||
if (node instanceof nodes.MappingNode) {
|
||
this.flatten_mapping(node);
|
||
}
|
||
return Constructor.__super__.construct_mapping.call(this, node);
|
||
};
|
||
Constructor.prototype.construct_yaml_null = function(node) {
|
||
this.construct_scalar(node);
|
||
return null;
|
||
};
|
||
Constructor.prototype.construct_yaml_bool = function(node) {
|
||
var value;
|
||
value = this.construct_scalar(node);
|
||
return BOOL_VALUES[value.toLowerCase()];
|
||
};
|
||
Constructor.prototype.construct_yaml_int = function(node) {
|
||
var base, digit, digits, part, sign, value, _i, _len, _ref2;
|
||
value = this.construct_scalar(node);
|
||
value = value.replace(/_/g, "");
|
||
sign = value[0] === "-" ? -1 : 1;
|
||
if (_ref2 = value[0], __indexOf.call("+-", _ref2) >= 0) {
|
||
value = value.slice(1);
|
||
}
|
||
if (value === "0") {
|
||
return 0;
|
||
} else if (value.indexOf("0b") === 0) {
|
||
return sign * parseInt(value.slice(2), 2);
|
||
} else if (value.indexOf("0x") === 0) {
|
||
return sign * parseInt(value.slice(2), 16);
|
||
} else if (value.indexOf("0o") === 0) {
|
||
return sign * parseInt(value.slice(2), 8);
|
||
} else if (value[0] === "0") {
|
||
return sign * parseInt(value, 8);
|
||
} else if (__indexOf.call(value, ":") >= 0) {
|
||
digits = function() {
|
||
var _i, _len, _ref3, _results;
|
||
_ref3 = value.split(/:/g);
|
||
_results = [];
|
||
for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
|
||
part = _ref3[_i];
|
||
_results.push(parseInt(part));
|
||
}
|
||
return _results;
|
||
}();
|
||
digits.reverse();
|
||
base = 1;
|
||
value = 0;
|
||
for (_i = 0, _len = digits.length; _i < _len; _i++) {
|
||
digit = digits[_i];
|
||
value += digit * base;
|
||
base *= 60;
|
||
}
|
||
return sign * value;
|
||
} else {
|
||
return sign * parseInt(value);
|
||
}
|
||
};
|
||
Constructor.prototype.construct_yaml_float = function(node) {
|
||
var base, digit, digits, part, sign, value, _i, _len, _ref2;
|
||
value = this.construct_scalar(node);
|
||
value = value.replace(/_/g, "").toLowerCase();
|
||
sign = value[0] === "-" ? -1 : 1;
|
||
if (_ref2 = value[0], __indexOf.call("+-", _ref2) >= 0) {
|
||
value = value.slice(1);
|
||
}
|
||
if (value === ".inf") {
|
||
return sign * Infinity;
|
||
} else if (value === ".nan") {
|
||
return NaN;
|
||
} else if (__indexOf.call(value, ":") >= 0) {
|
||
digits = function() {
|
||
var _i, _len, _ref3, _results;
|
||
_ref3 = value.split(/:/g);
|
||
_results = [];
|
||
for (_i = 0, _len = _ref3.length; _i < _len; _i++) {
|
||
part = _ref3[_i];
|
||
_results.push(parseFloat(part));
|
||
}
|
||
return _results;
|
||
}();
|
||
digits.reverse();
|
||
base = 1;
|
||
value = 0;
|
||
for (_i = 0, _len = digits.length; _i < _len; _i++) {
|
||
digit = digits[_i];
|
||
value += digit * base;
|
||
base *= 60;
|
||
}
|
||
return sign * value;
|
||
} else {
|
||
return sign * parseFloat(value);
|
||
}
|
||
};
|
||
Constructor.prototype.construct_yaml_binary = function(node) {
|
||
var error, value;
|
||
value = this.construct_scalar(node);
|
||
try {
|
||
if (typeof window !== "undefined" && window !== null) {
|
||
return atob(value);
|
||
}
|
||
return (new Buffer(value, "base64")).toString("ascii");
|
||
} catch (_error) {
|
||
error = _error;
|
||
throw new exports.ConstructorError(null, null, "failed to decode base64 data: " + error, node.start_mark);
|
||
}
|
||
};
|
||
Constructor.prototype.construct_yaml_timestamp = function(node) {
|
||
var date, day, fraction, hour, index, key, match, millisecond, minute, month, second, tz_hour, tz_minute, tz_sign, value, values, year;
|
||
value = this.construct_scalar(node);
|
||
match = node.value.match(TIMESTAMP_REGEX);
|
||
values = {};
|
||
for (key in TIMESTAMP_PARTS) {
|
||
index = TIMESTAMP_PARTS[key];
|
||
values[key] = match[index];
|
||
}
|
||
year = parseInt(values.year);
|
||
month = parseInt(values.month) - 1;
|
||
day = parseInt(values.day);
|
||
if (!values.hour) {
|
||
return new Date(Date.UTC(year, month, day));
|
||
}
|
||
hour = parseInt(values.hour);
|
||
minute = parseInt(values.minute);
|
||
second = parseInt(values.second);
|
||
millisecond = 0;
|
||
if (values.fraction) {
|
||
fraction = values.fraction.slice(0, 6);
|
||
while (fraction.length < 6) {
|
||
fraction += "0";
|
||
}
|
||
fraction = parseInt(fraction);
|
||
millisecond = Math.round(fraction / 1e3);
|
||
}
|
||
if (values.tz_sign) {
|
||
tz_sign = values.tz_sign === "-" ? 1 : -1;
|
||
if (tz_hour = parseInt(values.tz_hour)) {
|
||
hour += tz_sign * tz_hour;
|
||
}
|
||
if (tz_minute = parseInt(values.tz_minute)) {
|
||
minute += tz_sign * tz_minute;
|
||
}
|
||
}
|
||
date = new Date(Date.UTC(year, month, day, hour, minute, second, millisecond));
|
||
return date;
|
||
};
|
||
Constructor.prototype.construct_yaml_pair_list = function(type, node) {
|
||
var list, _this = this;
|
||
list = [];
|
||
if (!(node instanceof nodes.SequenceNode)) {
|
||
throw new exports.ConstructorError("while constructing " + type, node.start_mark, "expected a sequence but found " + node.id, node.start_mark);
|
||
}
|
||
this.defer(function() {
|
||
var key, key_node, subnode, value, value_node, _i, _len, _ref2, _ref3, _results;
|
||
_ref2 = node.value;
|
||
_results = [];
|
||
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
|
||
subnode = _ref2[_i];
|
||
if (!(subnode instanceof nodes.MappingNode)) {
|
||
throw new exports.ConstructorError("while constructing " + type, node.start_mark, "expected a mapping of length 1 but found " + subnode.id, subnode.start_mark);
|
||
}
|
||
if (subnode.value.length !== 1) {
|
||
throw new exports.ConstructorError("while constructing " + type, node.start_mark, "expected a mapping of length 1 but found " + subnode.id, subnode.start_mark);
|
||
}
|
||
_ref3 = subnode.value[0], key_node = _ref3[0], value_node = _ref3[1];
|
||
key = _this.construct_object(key_node);
|
||
value = _this.construct_object(value_node);
|
||
_results.push(list.push([ key, value ]));
|
||
}
|
||
return _results;
|
||
});
|
||
return list;
|
||
};
|
||
Constructor.prototype.construct_yaml_omap = function(node) {
|
||
return this.construct_yaml_pair_list("an ordered map", node);
|
||
};
|
||
Constructor.prototype.construct_yaml_pairs = function(node) {
|
||
return this.construct_yaml_pair_list("pairs", node);
|
||
};
|
||
Constructor.prototype.construct_yaml_set = function(node) {
|
||
var data, _this = this;
|
||
data = [];
|
||
this.defer(function() {
|
||
var item, _results;
|
||
_results = [];
|
||
for (item in _this.construct_mapping(node)) {
|
||
_results.push(data.push(item));
|
||
}
|
||
return _results;
|
||
});
|
||
return data;
|
||
};
|
||
Constructor.prototype.construct_yaml_str = function(node) {
|
||
return this.construct_scalar(node);
|
||
};
|
||
Constructor.prototype.construct_yaml_seq = function(node) {
|
||
var data, _this = this;
|
||
data = [];
|
||
this.defer(function() {
|
||
var item, _i, _len, _ref2, _results;
|
||
_ref2 = _this.construct_sequence(node);
|
||
_results = [];
|
||
for (_i = 0, _len = _ref2.length; _i < _len; _i++) {
|
||
item = _ref2[_i];
|
||
_results.push(data.push(item));
|
||
}
|
||
return _results;
|
||
});
|
||
return data;
|
||
};
|
||
Constructor.prototype.construct_yaml_map = function(node) {
|
||
var data, _this = this;
|
||
data = {};
|
||
this.defer(function() {
|
||
var key, value, _ref2, _results;
|
||
_ref2 = _this.construct_mapping(node);
|
||
_results = [];
|
||
for (key in _ref2) {
|
||
value = _ref2[key];
|
||
_results.push(data[key] = value);
|
||
}
|
||
return _results;
|
||
});
|
||
return data;
|
||
};
|
||
Constructor.prototype.construct_yaml_object = function(node, klass) {
|
||
var data, _this = this;
|
||
data = new klass;
|
||
this.defer(function() {
|
||
var key, value, _ref2, _results;
|
||
_ref2 = _this.construct_mapping(node, true);
|
||
_results = [];
|
||
for (key in _ref2) {
|
||
value = _ref2[key];
|
||
_results.push(data[key] = value);
|
||
}
|
||
return _results;
|
||
});
|
||
return data;
|
||
};
|
||
Constructor.prototype.construct_undefined = function(node) {
|
||
throw new exports.ConstructorError(null, null, "could not determine a constructor for the tag " + node.tag, node.start_mark);
|
||
};
|
||
return Constructor;
|
||
}(this.BaseConstructor);
|
||
this.Constructor.add_constructor("tag:yaml.org,2002:null", this.Constructor.prototype.construct_yaml_null);
|
||
this.Constructor.add_constructor("tag:yaml.org,2002:bool", this.Constructor.prototype.construct_yaml_bool);
|
||
this.Constructor.add_constructor("tag:yaml.org,2002:int", this.Constructor.prototype.construct_yaml_int);
|
||
this.Constructor.add_constructor("tag:yaml.org,2002:float", this.Constructor.prototype.construct_yaml_float);
|
||
this.Constructor.add_constructor("tag:yaml.org,2002:binary", this.Constructor.prototype.construct_yaml_binary);
|
||
this.Constructor.add_constructor("tag:yaml.org,2002:timestamp", this.Constructor.prototype.construct_yaml_timestamp);
|
||
this.Constructor.add_constructor("tag:yaml.org,2002:omap", this.Constructor.prototype.construct_yaml_omap);
|
||
this.Constructor.add_constructor("tag:yaml.org,2002:pairs", this.Constructor.prototype.construct_yaml_pairs);
|
||
this.Constructor.add_constructor("tag:yaml.org,2002:set", this.Constructor.prototype.construct_yaml_set);
|
||
this.Constructor.add_constructor("tag:yaml.org,2002:str", this.Constructor.prototype.construct_yaml_str);
|
||
this.Constructor.add_constructor("tag:yaml.org,2002:seq", this.Constructor.prototype.construct_yaml_seq);
|
||
this.Constructor.add_constructor("tag:yaml.org,2002:map", this.Constructor.prototype.construct_yaml_map);
|
||
this.Constructor.add_constructor(null, this.Constructor.prototype.construct_undefined);
|
||
}).call(this);
|
||
});
|
||
register({
|
||
"0": [ "./reader" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var Mark, YAMLError, _ref, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) {
|
||
for (var key in parent) {
|
||
if (__hasProp.call(parent, key)) child[key] = parent[key];
|
||
}
|
||
function ctor() {
|
||
this.constructor = child;
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child;
|
||
}, __indexOf = [].indexOf || function(item) {
|
||
for (var i = 0, l = this.length; i < l; i++) {
|
||
if (i in this && this[i] === item) return i;
|
||
}
|
||
return -1;
|
||
};
|
||
_ref = require("./errors"), Mark = _ref.Mark, YAMLError = _ref.YAMLError;
|
||
this.ReaderError = function(_super) {
|
||
__extends(ReaderError, _super);
|
||
function ReaderError(name, position, character, reason) {
|
||
this.name = name;
|
||
this.position = position;
|
||
this.character = character;
|
||
this.reason = reason;
|
||
ReaderError.__super__.constructor.call(this);
|
||
}
|
||
ReaderError.prototype.toString = function() {
|
||
return "unacceptable character " + this.character.charCodeAt() + ": " + this.reason + '\n in "' + this.name + '", position ' + this.position;
|
||
};
|
||
return ReaderError;
|
||
}(YAMLError);
|
||
this.Reader = function() {
|
||
var NON_PRINTABLE;
|
||
NON_PRINTABLE = /[^\x09\x0A\x0D\x20-\x7E\x85\xA0-\uD7FF\uE000-\uFFFD]/;
|
||
function Reader(string) {
|
||
this.string = string;
|
||
this.line = 0;
|
||
this.column = 0;
|
||
this.index = 0;
|
||
this.check_printable();
|
||
this.string += "\0";
|
||
}
|
||
Reader.prototype.peek = function(index) {
|
||
if (index == null) {
|
||
index = 0;
|
||
}
|
||
return this.string[this.index + index];
|
||
};
|
||
Reader.prototype.prefix = function(length) {
|
||
if (length == null) {
|
||
length = 1;
|
||
}
|
||
return this.string.slice(this.index, this.index + length);
|
||
};
|
||
Reader.prototype.forward = function(length) {
|
||
var char, _results;
|
||
if (length == null) {
|
||
length = 1;
|
||
}
|
||
_results = [];
|
||
while (length) {
|
||
char = this.string[this.index];
|
||
this.index++;
|
||
if (__indexOf.call("\n
₂\u2029", char) >= 0 || char === "\r" && this.string[this.index] !== "\n") {
|
||
this.line++;
|
||
this.column = 0;
|
||
} else {
|
||
this.column++;
|
||
}
|
||
_results.push(length--);
|
||
}
|
||
return _results;
|
||
};
|
||
Reader.prototype.get_mark = function() {
|
||
return new Mark(this.name, this.line, this.column, this.string, this.index);
|
||
};
|
||
Reader.prototype.check_printable = function() {
|
||
var character, match, position;
|
||
match = NON_PRINTABLE.exec(this.string);
|
||
if (match) {
|
||
character = match[0];
|
||
position = this.string.length - this.index + match.index;
|
||
throw new exports.ReaderError(this.name, position, character.charCodeAt(), "special characters are not allowed");
|
||
}
|
||
};
|
||
return Reader;
|
||
}();
|
||
}).call(this);
|
||
});
|
||
register({
|
||
"0": [ "./tokens" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var _ref, _ref1, _ref10, _ref11, _ref12, _ref13, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) {
|
||
for (var key in parent) {
|
||
if (__hasProp.call(parent, key)) child[key] = parent[key];
|
||
}
|
||
function ctor() {
|
||
this.constructor = child;
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child;
|
||
};
|
||
this.Token = function() {
|
||
function Token(start_mark, end_mark) {
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
}
|
||
return Token;
|
||
}();
|
||
this.DirectiveToken = function(_super) {
|
||
__extends(DirectiveToken, _super);
|
||
DirectiveToken.prototype.id = "<directive>";
|
||
function DirectiveToken(name, value, start_mark, end_mark) {
|
||
this.name = name;
|
||
this.value = value;
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
}
|
||
return DirectiveToken;
|
||
}(this.Token);
|
||
this.DocumentStartToken = function(_super) {
|
||
__extends(DocumentStartToken, _super);
|
||
function DocumentStartToken() {
|
||
_ref = DocumentStartToken.__super__.constructor.apply(this, arguments);
|
||
return _ref;
|
||
}
|
||
DocumentStartToken.prototype.id = "<document start>";
|
||
return DocumentStartToken;
|
||
}(this.Token);
|
||
this.DocumentEndToken = function(_super) {
|
||
__extends(DocumentEndToken, _super);
|
||
function DocumentEndToken() {
|
||
_ref1 = DocumentEndToken.__super__.constructor.apply(this, arguments);
|
||
return _ref1;
|
||
}
|
||
DocumentEndToken.prototype.id = "<document end>";
|
||
return DocumentEndToken;
|
||
}(this.Token);
|
||
this.StreamStartToken = function(_super) {
|
||
__extends(StreamStartToken, _super);
|
||
StreamStartToken.prototype.id = "<stream start>";
|
||
function StreamStartToken(start_mark, end_mark, encoding) {
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
this.encoding = encoding;
|
||
}
|
||
return StreamStartToken;
|
||
}(this.Token);
|
||
this.StreamEndToken = function(_super) {
|
||
__extends(StreamEndToken, _super);
|
||
function StreamEndToken() {
|
||
_ref2 = StreamEndToken.__super__.constructor.apply(this, arguments);
|
||
return _ref2;
|
||
}
|
||
StreamEndToken.prototype.id = "<stream end>";
|
||
return StreamEndToken;
|
||
}(this.Token);
|
||
this.BlockSequenceStartToken = function(_super) {
|
||
__extends(BlockSequenceStartToken, _super);
|
||
function BlockSequenceStartToken() {
|
||
_ref3 = BlockSequenceStartToken.__super__.constructor.apply(this, arguments);
|
||
return _ref3;
|
||
}
|
||
BlockSequenceStartToken.prototype.id = "<block sequence start>";
|
||
return BlockSequenceStartToken;
|
||
}(this.Token);
|
||
this.BlockMappingStartToken = function(_super) {
|
||
__extends(BlockMappingStartToken, _super);
|
||
function BlockMappingStartToken() {
|
||
_ref4 = BlockMappingStartToken.__super__.constructor.apply(this, arguments);
|
||
return _ref4;
|
||
}
|
||
BlockMappingStartToken.prototype.id = "<block mapping end>";
|
||
return BlockMappingStartToken;
|
||
}(this.Token);
|
||
this.BlockEndToken = function(_super) {
|
||
__extends(BlockEndToken, _super);
|
||
function BlockEndToken() {
|
||
_ref5 = BlockEndToken.__super__.constructor.apply(this, arguments);
|
||
return _ref5;
|
||
}
|
||
BlockEndToken.prototype.id = "<block end>";
|
||
return BlockEndToken;
|
||
}(this.Token);
|
||
this.FlowSequenceStartToken = function(_super) {
|
||
__extends(FlowSequenceStartToken, _super);
|
||
function FlowSequenceStartToken() {
|
||
_ref6 = FlowSequenceStartToken.__super__.constructor.apply(this, arguments);
|
||
return _ref6;
|
||
}
|
||
FlowSequenceStartToken.prototype.id = "[";
|
||
return FlowSequenceStartToken;
|
||
}(this.Token);
|
||
this.FlowMappingStartToken = function(_super) {
|
||
__extends(FlowMappingStartToken, _super);
|
||
function FlowMappingStartToken() {
|
||
_ref7 = FlowMappingStartToken.__super__.constructor.apply(this, arguments);
|
||
return _ref7;
|
||
}
|
||
FlowMappingStartToken.prototype.id = "{";
|
||
return FlowMappingStartToken;
|
||
}(this.Token);
|
||
this.FlowSequenceEndToken = function(_super) {
|
||
__extends(FlowSequenceEndToken, _super);
|
||
function FlowSequenceEndToken() {
|
||
_ref8 = FlowSequenceEndToken.__super__.constructor.apply(this, arguments);
|
||
return _ref8;
|
||
}
|
||
FlowSequenceEndToken.prototype.id = "]";
|
||
return FlowSequenceEndToken;
|
||
}(this.Token);
|
||
this.FlowMappingEndToken = function(_super) {
|
||
__extends(FlowMappingEndToken, _super);
|
||
function FlowMappingEndToken() {
|
||
_ref9 = FlowMappingEndToken.__super__.constructor.apply(this, arguments);
|
||
return _ref9;
|
||
}
|
||
FlowMappingEndToken.prototype.id = "}";
|
||
return FlowMappingEndToken;
|
||
}(this.Token);
|
||
this.KeyToken = function(_super) {
|
||
__extends(KeyToken, _super);
|
||
function KeyToken() {
|
||
_ref10 = KeyToken.__super__.constructor.apply(this, arguments);
|
||
return _ref10;
|
||
}
|
||
KeyToken.prototype.id = "?";
|
||
return KeyToken;
|
||
}(this.Token);
|
||
this.ValueToken = function(_super) {
|
||
__extends(ValueToken, _super);
|
||
function ValueToken() {
|
||
_ref11 = ValueToken.__super__.constructor.apply(this, arguments);
|
||
return _ref11;
|
||
}
|
||
ValueToken.prototype.id = ":";
|
||
return ValueToken;
|
||
}(this.Token);
|
||
this.BlockEntryToken = function(_super) {
|
||
__extends(BlockEntryToken, _super);
|
||
function BlockEntryToken() {
|
||
_ref12 = BlockEntryToken.__super__.constructor.apply(this, arguments);
|
||
return _ref12;
|
||
}
|
||
BlockEntryToken.prototype.id = "-";
|
||
return BlockEntryToken;
|
||
}(this.Token);
|
||
this.FlowEntryToken = function(_super) {
|
||
__extends(FlowEntryToken, _super);
|
||
function FlowEntryToken() {
|
||
_ref13 = FlowEntryToken.__super__.constructor.apply(this, arguments);
|
||
return _ref13;
|
||
}
|
||
FlowEntryToken.prototype.id = ",";
|
||
return FlowEntryToken;
|
||
}(this.Token);
|
||
this.AliasToken = function(_super) {
|
||
__extends(AliasToken, _super);
|
||
AliasToken.prototype.id = "<alias>";
|
||
function AliasToken(value, start_mark, end_mark) {
|
||
this.value = value;
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
}
|
||
return AliasToken;
|
||
}(this.Token);
|
||
this.AnchorToken = function(_super) {
|
||
__extends(AnchorToken, _super);
|
||
AnchorToken.prototype.id = "<anchor>";
|
||
function AnchorToken(value, start_mark, end_mark) {
|
||
this.value = value;
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
}
|
||
return AnchorToken;
|
||
}(this.Token);
|
||
this.TagToken = function(_super) {
|
||
__extends(TagToken, _super);
|
||
TagToken.prototype.id = "<tag>";
|
||
function TagToken(value, start_mark, end_mark) {
|
||
this.value = value;
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
}
|
||
return TagToken;
|
||
}(this.Token);
|
||
this.ScalarToken = function(_super) {
|
||
__extends(ScalarToken, _super);
|
||
ScalarToken.prototype.id = "<scalar>";
|
||
function ScalarToken(value, plain, start_mark, end_mark, style) {
|
||
this.value = value;
|
||
this.plain = plain;
|
||
this.start_mark = start_mark;
|
||
this.end_mark = end_mark;
|
||
this.style = style;
|
||
}
|
||
return ScalarToken;
|
||
}(this.Token);
|
||
}).call(this);
|
||
});
|
||
register({
|
||
"0": [ "./scanner" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var MarkedYAMLError, SimpleKey, tokens, util, _ref, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) {
|
||
for (var key in parent) {
|
||
if (__hasProp.call(parent, key)) child[key] = parent[key];
|
||
}
|
||
function ctor() {
|
||
this.constructor = child;
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child;
|
||
}, __slice = [].slice, __indexOf = [].indexOf || function(item) {
|
||
for (var i = 0, l = this.length; i < l; i++) {
|
||
if (i in this && this[i] === item) return i;
|
||
}
|
||
return -1;
|
||
};
|
||
MarkedYAMLError = require("./errors").MarkedYAMLError;
|
||
tokens = require("./tokens");
|
||
util = require("./util");
|
||
this.ScannerError = function(_super) {
|
||
__extends(ScannerError, _super);
|
||
function ScannerError() {
|
||
_ref = ScannerError.__super__.constructor.apply(this, arguments);
|
||
return _ref;
|
||
}
|
||
return ScannerError;
|
||
}(MarkedYAMLError);
|
||
SimpleKey = function() {
|
||
function SimpleKey(token_number, required, index, line, column, mark) {
|
||
this.token_number = token_number;
|
||
this.required = required;
|
||
this.index = index;
|
||
this.line = line;
|
||
this.column = column;
|
||
this.mark = mark;
|
||
}
|
||
return SimpleKey;
|
||
}();
|
||
this.Scanner = function() {
|
||
var C_LB, C_NUMBERS, C_WS, ESCAPE_CODES, ESCAPE_REPLACEMENTS;
|
||
C_LB = "\r\n
\u2028\u2029";
|
||
C_WS = " ";
|
||
C_NUMBERS = "0123456789";
|
||
ESCAPE_REPLACEMENTS = {
|
||
"0": "\0",
|
||
a: "",
|
||
b: "\b",
|
||
t: " ",
|
||
" ": " ",
|
||
n: "\n",
|
||
v: "",
|
||
f: "\f",
|
||
r: "\r",
|
||
e: "",
|
||
" ": " ",
|
||
'"': '"',
|
||
"\\": "\\",
|
||
N: "
",
|
||
_: " ",
|
||
L: "\u2028",
|
||
P: "\u2029"
|
||
};
|
||
ESCAPE_CODES = {
|
||
x: 2,
|
||
u: 4,
|
||
U: 8
|
||
};
|
||
function Scanner() {
|
||
this.done = false;
|
||
this.flow_level = 0;
|
||
this.tokens = [];
|
||
this.fetch_stream_start();
|
||
this.tokens_taken = 0;
|
||
this.indent = -1;
|
||
this.indents = [];
|
||
this.allow_simple_key = true;
|
||
this.possible_simple_keys = {};
|
||
}
|
||
Scanner.prototype.check_token = function() {
|
||
var choice, choices, _i, _len;
|
||
choices = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
||
while (this.need_more_tokens()) {
|
||
this.fetch_more_tokens();
|
||
}
|
||
if (this.tokens.length !== 0) {
|
||
if (choices.length === 0) {
|
||
return true;
|
||
}
|
||
for (_i = 0, _len = choices.length; _i < _len; _i++) {
|
||
choice = choices[_i];
|
||
if (this.tokens[0] instanceof choice) {
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
return false;
|
||
};
|
||
Scanner.prototype.peek_token = function() {
|
||
while (this.need_more_tokens()) {
|
||
this.fetch_more_tokens();
|
||
}
|
||
if (this.tokens.length !== 0) {
|
||
return this.tokens[0];
|
||
}
|
||
};
|
||
Scanner.prototype.get_token = function() {
|
||
while (this.need_more_tokens()) {
|
||
this.fetch_more_tokens();
|
||
}
|
||
if (this.tokens.length !== 0) {
|
||
this.tokens_taken++;
|
||
return this.tokens.shift();
|
||
}
|
||
};
|
||
Scanner.prototype.need_more_tokens = function() {
|
||
if (this.done) {
|
||
return false;
|
||
}
|
||
if (this.tokens.length === 0) {
|
||
return true;
|
||
}
|
||
this.stale_possible_simple_keys();
|
||
if (this.next_possible_simple_key() === this.tokens_taken) {
|
||
return true;
|
||
}
|
||
return false;
|
||
};
|
||
Scanner.prototype.fetch_more_tokens = function() {
|
||
var char;
|
||
this.scan_to_next_token();
|
||
this.stale_possible_simple_keys();
|
||
this.unwind_indent(this.column);
|
||
char = this.peek();
|
||
if (char === "\0") {
|
||
return this.fetch_stream_end();
|
||
}
|
||
if (char === "%" && this.check_directive()) {
|
||
return this.fetch_directive();
|
||
}
|
||
if (char === "-" && this.check_document_start()) {
|
||
return this.fetch_document_start();
|
||
}
|
||
if (char === "." && this.check_document_end()) {
|
||
return this.fetch_document_end();
|
||
}
|
||
if (char === "[") {
|
||
return this.fetch_flow_sequence_start();
|
||
}
|
||
if (char === "{") {
|
||
return this.fetch_flow_mapping_start();
|
||
}
|
||
if (char === "]") {
|
||
return this.fetch_flow_sequence_end();
|
||
}
|
||
if (char === "}") {
|
||
return this.fetch_flow_mapping_end();
|
||
}
|
||
if (char === ",") {
|
||
return this.fetch_flow_entry();
|
||
}
|
||
if (char === "-" && this.check_block_entry()) {
|
||
return this.fetch_block_entry();
|
||
}
|
||
if (char === "?" && this.check_key()) {
|
||
return this.fetch_key();
|
||
}
|
||
if (char === ":" && this.check_value()) {
|
||
return this.fetch_value();
|
||
}
|
||
if (char === "*") {
|
||
return this.fetch_alias();
|
||
}
|
||
if (char === "&") {
|
||
return this.fetch_anchor();
|
||
}
|
||
if (char === "!") {
|
||
return this.fetch_tag();
|
||
}
|
||
if (char === "|" && this.flow_level === 0) {
|
||
return this.fetch_literal();
|
||
}
|
||
if (char === ">" && this.flow_level === 0) {
|
||
return this.fetch_folded();
|
||
}
|
||
if (char === "'") {
|
||
return this.fetch_single();
|
||
}
|
||
if (char === '"') {
|
||
return this.fetch_double();
|
||
}
|
||
if (this.check_plain()) {
|
||
return this.fetch_plain();
|
||
}
|
||
throw new exports.ScannerError("while scanning for the next token", null, "found character " + char + " that cannot start any token", this.get_mark());
|
||
};
|
||
Scanner.prototype.next_possible_simple_key = function() {
|
||
var key, level, min_token_number, _ref1;
|
||
min_token_number = null;
|
||
_ref1 = this.possible_simple_keys;
|
||
for (level in _ref1) {
|
||
if (!__hasProp.call(_ref1, level)) continue;
|
||
key = _ref1[level];
|
||
if (min_token_number === null || key.token_number < min_token_number) {
|
||
min_token_number = key.token_number;
|
||
}
|
||
}
|
||
return min_token_number;
|
||
};
|
||
Scanner.prototype.stale_possible_simple_keys = function() {
|
||
var key, level, _ref1, _results;
|
||
_ref1 = this.possible_simple_keys;
|
||
_results = [];
|
||
for (level in _ref1) {
|
||
if (!__hasProp.call(_ref1, level)) continue;
|
||
key = _ref1[level];
|
||
if (key.line === this.line && this.index - key.index <= 1024) {
|
||
continue;
|
||
}
|
||
if (!key.required) {
|
||
_results.push(delete this.possible_simple_keys[level]);
|
||
} else {
|
||
throw new exports.ScannerError("while scanning a simple key", key.mark, "could not find expected ':'", this.get_mark());
|
||
}
|
||
}
|
||
return _results;
|
||
};
|
||
Scanner.prototype.save_possible_simple_key = function() {
|
||
var required, token_number;
|
||
required = this.flow_level === 0 && this.indent === this.column;
|
||
if (required && !this.allow_simple_key) {
|
||
throw new Error("logic failure");
|
||
}
|
||
if (!this.allow_simple_key) {
|
||
return;
|
||
}
|
||
this.remove_possible_simple_key();
|
||
token_number = this.tokens_taken + this.tokens.length;
|
||
return this.possible_simple_keys[this.flow_level] = new SimpleKey(token_number, required, this.index, this.line, this.column, this.get_mark());
|
||
};
|
||
Scanner.prototype.remove_possible_simple_key = function() {
|
||
var key;
|
||
if (!(key = this.possible_simple_keys[this.flow_level])) {
|
||
return;
|
||
}
|
||
if (!key.required) {
|
||
return delete this.possible_simple_keys[this.flow_level];
|
||
} else {
|
||
throw new exports.ScannerError("while scanning a simple key", key.mark, "could not find expected ':'", this.get_mark());
|
||
}
|
||
};
|
||
Scanner.prototype.unwind_indent = function(column) {
|
||
var mark, _results;
|
||
if (this.flow_level !== 0) {
|
||
return;
|
||
}
|
||
_results = [];
|
||
while (this.indent > column) {
|
||
mark = this.get_mark();
|
||
this.indent = this.indents.pop();
|
||
_results.push(this.tokens.push(new tokens.BlockEndToken(mark, mark)));
|
||
}
|
||
return _results;
|
||
};
|
||
Scanner.prototype.add_indent = function(column) {
|
||
if (!(column > this.indent)) {
|
||
return false;
|
||
}
|
||
this.indents.push(this.indent);
|
||
this.indent = column;
|
||
return true;
|
||
};
|
||
Scanner.prototype.fetch_stream_start = function() {
|
||
var mark;
|
||
mark = this.get_mark();
|
||
return this.tokens.push(new tokens.StreamStartToken(mark, mark, this.encoding));
|
||
};
|
||
Scanner.prototype.fetch_stream_end = function() {
|
||
var mark;
|
||
this.unwind_indent(-1);
|
||
this.remove_possible_simple_key();
|
||
this.allow_possible_simple_key = false;
|
||
this.possible_simple_keys = {};
|
||
mark = this.get_mark();
|
||
this.tokens.push(new tokens.StreamEndToken(mark, mark));
|
||
return this.done = true;
|
||
};
|
||
Scanner.prototype.fetch_directive = function() {
|
||
this.unwind_indent(-1);
|
||
this.remove_possible_simple_key();
|
||
this.allow_simple_key = false;
|
||
return this.tokens.push(this.scan_directive());
|
||
};
|
||
Scanner.prototype.fetch_document_start = function() {
|
||
return this.fetch_document_indicator(tokens.DocumentStartToken);
|
||
};
|
||
Scanner.prototype.fetch_document_end = function() {
|
||
return this.fetch_document_indicator(tokens.DocumentEndToken);
|
||
};
|
||
Scanner.prototype.fetch_document_indicator = function(TokenClass) {
|
||
var start_mark;
|
||
this.unwind_indent(-1);
|
||
this.remove_possible_simple_key();
|
||
this.allow_simple_key = false;
|
||
start_mark = this.get_mark();
|
||
this.forward(3);
|
||
return this.tokens.push(new TokenClass(start_mark, this.get_mark()));
|
||
};
|
||
Scanner.prototype.fetch_flow_sequence_start = function() {
|
||
return this.fetch_flow_collection_start(tokens.FlowSequenceStartToken);
|
||
};
|
||
Scanner.prototype.fetch_flow_mapping_start = function() {
|
||
return this.fetch_flow_collection_start(tokens.FlowMappingStartToken);
|
||
};
|
||
Scanner.prototype.fetch_flow_collection_start = function(TokenClass) {
|
||
var start_mark;
|
||
this.save_possible_simple_key();
|
||
this.flow_level++;
|
||
this.allow_simple_key = true;
|
||
start_mark = this.get_mark();
|
||
this.forward();
|
||
return this.tokens.push(new TokenClass(start_mark, this.get_mark()));
|
||
};
|
||
Scanner.prototype.fetch_flow_sequence_end = function() {
|
||
return this.fetch_flow_collection_end(tokens.FlowSequenceEndToken);
|
||
};
|
||
Scanner.prototype.fetch_flow_mapping_end = function() {
|
||
return this.fetch_flow_collection_end(tokens.FlowMappingEndToken);
|
||
};
|
||
Scanner.prototype.fetch_flow_collection_end = function(TokenClass) {
|
||
var start_mark;
|
||
this.remove_possible_simple_key();
|
||
this.flow_level--;
|
||
this.allow_simple_key = false;
|
||
start_mark = this.get_mark();
|
||
this.forward();
|
||
return this.tokens.push(new TokenClass(start_mark, this.get_mark()));
|
||
};
|
||
Scanner.prototype.fetch_flow_entry = function() {
|
||
var start_mark;
|
||
this.allow_simple_key = true;
|
||
this.remove_possible_simple_key();
|
||
start_mark = this.get_mark();
|
||
this.forward();
|
||
return this.tokens.push(new tokens.FlowEntryToken(start_mark, this.get_mark()));
|
||
};
|
||
Scanner.prototype.fetch_block_entry = function() {
|
||
var mark, start_mark;
|
||
if (this.flow_level === 0) {
|
||
if (!this.allow_simple_key) {
|
||
throw new exports.ScannerError(null, null, "sequence entries are not allowed here", this.get_mark());
|
||
}
|
||
if (this.add_indent(this.column)) {
|
||
mark = this.get_mark();
|
||
this.tokens.push(new tokens.BlockSequenceStartToken(mark, mark));
|
||
}
|
||
}
|
||
this.allow_simple_key = true;
|
||
this.remove_possible_simple_key();
|
||
start_mark = this.get_mark();
|
||
this.forward();
|
||
return this.tokens.push(new tokens.BlockEntryToken(start_mark, this.get_mark()));
|
||
};
|
||
Scanner.prototype.fetch_key = function() {
|
||
var mark, start_mark;
|
||
if (this.flow_level === 0) {
|
||
if (!this.allow_simple_key) {
|
||
throw new exports.ScannerError(null, null, "mapping keys are not allowed here", this.get_mark());
|
||
}
|
||
if (this.add_indent(this.column)) {
|
||
mark = this.get_mark();
|
||
this.tokens.push(new tokens.BlockMappingStartToken(mark, mark));
|
||
}
|
||
}
|
||
this.allow_simple_key = !this.flow_level;
|
||
this.remove_possible_simple_key();
|
||
start_mark = this.get_mark();
|
||
this.forward();
|
||
return this.tokens.push(new tokens.KeyToken(start_mark, this.get_mark()));
|
||
};
|
||
Scanner.prototype.fetch_value = function() {
|
||
var key, mark, start_mark;
|
||
if (key = this.possible_simple_keys[this.flow_level]) {
|
||
delete this.possible_simple_keys[this.flow_level];
|
||
this.tokens.splice(key.token_number - this.tokens_taken, 0, new tokens.KeyToken(key.mark, key.mark));
|
||
if (this.flow_level === 0) {
|
||
if (this.add_indent(key.column)) {
|
||
this.tokens.splice(key.token_number - this.tokens_taken, 0, new tokens.BlockMappingStartToken(key.mark, key.mark));
|
||
}
|
||
}
|
||
this.allow_simple_key = false;
|
||
} else {
|
||
if (this.flow_level === 0) {
|
||
if (!this.allow_simple_key) {
|
||
throw new exports.ScannerError(null, null, "mapping values are not allowed here", this.get_mark());
|
||
}
|
||
if (this.add_indent(this.column)) {
|
||
mark = this.get_mark();
|
||
this.tokens.push(new tokens.BlockMappingStartToken(mark, mark));
|
||
}
|
||
}
|
||
this.allow_simple_key = !this.flow_level;
|
||
this.remove_possible_simple_key();
|
||
}
|
||
start_mark = this.get_mark();
|
||
this.forward();
|
||
return this.tokens.push(new tokens.ValueToken(start_mark, this.get_mark()));
|
||
};
|
||
Scanner.prototype.fetch_alias = function() {
|
||
this.save_possible_simple_key();
|
||
this.allow_simple_key = false;
|
||
return this.tokens.push(this.scan_anchor(tokens.AliasToken));
|
||
};
|
||
Scanner.prototype.fetch_anchor = function() {
|
||
this.save_possible_simple_key();
|
||
this.allow_simple_key = false;
|
||
return this.tokens.push(this.scan_anchor(tokens.AnchorToken));
|
||
};
|
||
Scanner.prototype.fetch_tag = function() {
|
||
this.save_possible_simple_key();
|
||
this.allow_simple_key = false;
|
||
return this.tokens.push(this.scan_tag());
|
||
};
|
||
Scanner.prototype.fetch_literal = function() {
|
||
return this.fetch_block_scalar("|");
|
||
};
|
||
Scanner.prototype.fetch_folded = function() {
|
||
return this.fetch_block_scalar(">");
|
||
};
|
||
Scanner.prototype.fetch_block_scalar = function(style) {
|
||
this.allow_simple_key = true;
|
||
this.remove_possible_simple_key();
|
||
return this.tokens.push(this.scan_block_scalar(style));
|
||
};
|
||
Scanner.prototype.fetch_single = function() {
|
||
return this.fetch_flow_scalar("'");
|
||
};
|
||
Scanner.prototype.fetch_double = function() {
|
||
return this.fetch_flow_scalar('"');
|
||
};
|
||
Scanner.prototype.fetch_flow_scalar = function(style) {
|
||
this.save_possible_simple_key();
|
||
this.allow_simple_key = false;
|
||
return this.tokens.push(this.scan_flow_scalar(style));
|
||
};
|
||
Scanner.prototype.fetch_plain = function() {
|
||
this.save_possible_simple_key();
|
||
this.allow_simple_key = false;
|
||
return this.tokens.push(this.scan_plain());
|
||
};
|
||
Scanner.prototype.check_directive = function() {
|
||
if (this.column === 0) {
|
||
return true;
|
||
}
|
||
return false;
|
||
};
|
||
Scanner.prototype.check_document_start = function() {
|
||
var _ref1;
|
||
if (this.column === 0 && this.prefix(3) === "---" && (_ref1 = this.peek(3), __indexOf.call(C_LB + C_WS + "\0", _ref1) >= 0)) {
|
||
return true;
|
||
}
|
||
return false;
|
||
};
|
||
Scanner.prototype.check_document_end = function() {
|
||
var _ref1;
|
||
if (this.column === 0 && this.prefix(3) === "..." && (_ref1 = this.peek(3), __indexOf.call(C_LB + C_WS + "\0", _ref1) >= 0)) {
|
||
return true;
|
||
}
|
||
return false;
|
||
};
|
||
Scanner.prototype.check_block_entry = function() {
|
||
var _ref1;
|
||
return _ref1 = this.peek(1), __indexOf.call(C_LB + C_WS + "\0", _ref1) >= 0;
|
||
};
|
||
Scanner.prototype.check_key = function() {
|
||
var _ref1;
|
||
if (this.flow_level !== 0) {
|
||
return true;
|
||
}
|
||
return _ref1 = this.peek(1), __indexOf.call(C_LB + C_WS + "\0", _ref1) >= 0;
|
||
};
|
||
Scanner.prototype.check_value = function() {
|
||
var _ref1;
|
||
if (this.flow_level !== 0) {
|
||
return true;
|
||
}
|
||
return _ref1 = this.peek(1), __indexOf.call(C_LB + C_WS + "\0", _ref1) >= 0;
|
||
};
|
||
Scanner.prototype.check_plain = function() {
|
||
var char, _ref1;
|
||
char = this.peek();
|
||
return __indexOf.call(C_LB + C_WS + "\0-?:,[]{}#&*!|>'\"%@`", char) < 0 || (_ref1 = this.peek(1), __indexOf.call(C_LB + C_WS + "\0", _ref1) < 0) && (char === "-" || this.flow_level === 0 && __indexOf.call("?:", char) >= 0);
|
||
};
|
||
Scanner.prototype.scan_to_next_token = function() {
|
||
var found, _ref1, _results;
|
||
if (this.index === 0 && this.peek() === "") {
|
||
this.forward();
|
||
}
|
||
found = false;
|
||
_results = [];
|
||
while (!found) {
|
||
while (this.peek() === " ") {
|
||
this.forward();
|
||
}
|
||
if (this.peek() === "#") {
|
||
while (_ref1 = this.peek(), __indexOf.call(C_LB + "\0", _ref1) < 0) {
|
||
this.forward();
|
||
}
|
||
}
|
||
if (this.scan_line_break()) {
|
||
if (this.flow_level === 0) {
|
||
_results.push(this.allow_simple_key = true);
|
||
} else {
|
||
_results.push(void 0);
|
||
}
|
||
} else {
|
||
_results.push(found = true);
|
||
}
|
||
}
|
||
return _results;
|
||
};
|
||
Scanner.prototype.scan_directive = function() {
|
||
var end_mark, name, start_mark, value, _ref1;
|
||
start_mark = this.get_mark();
|
||
this.forward();
|
||
name = this.scan_directive_name(start_mark);
|
||
value = null;
|
||
if (name === "YAML") {
|
||
value = this.scan_yaml_directive_value(start_mark);
|
||
end_mark = this.get_mark();
|
||
} else if (name === "TAG") {
|
||
value = this.scan_tag_directive_value(start_mark);
|
||
end_mark = this.get_mark();
|
||
} else {
|
||
end_mark = this.get_mark();
|
||
while (_ref1 = this.peek(), __indexOf.call(C_LB + "\0", _ref1) < 0) {
|
||
this.forward();
|
||
}
|
||
}
|
||
this.scan_directive_ignored_line(start_mark);
|
||
return new tokens.DirectiveToken(name, value, start_mark, end_mark);
|
||
};
|
||
Scanner.prototype.scan_directive_name = function(start_mark) {
|
||
var char, length, value;
|
||
length = 0;
|
||
char = this.peek(length);
|
||
while ("0" <= char && char <= "9" || "A" <= char && char <= "Z" || "a" <= char && char <= "z" || __indexOf.call("-_", char) >= 0) {
|
||
length++;
|
||
char = peek(length);
|
||
}
|
||
throw new exports.ScannerError("while scanning a directive", start_mark, "expected alphanumeric or numeric character but found " + char, length === 0 ? this.get_mark() : void 0);
|
||
value = this.prefix(length);
|
||
this.forward(length);
|
||
char = this.peek();
|
||
throw new exports.ScannerError("while scanning a directive", start_mark, "expected alphanumeric or numeric character but found " + char, __indexOf.call(C_LB + "\0 ", char) < 0 ? this.get_mark() : void 0);
|
||
return value;
|
||
};
|
||
Scanner.prototype.scan_yaml_directive_value = function(start_mark) {
|
||
var major, minor, _ref1;
|
||
while (this.peek() === " ") {
|
||
this.forward();
|
||
}
|
||
major = this.scan_yaml_directive_number(start_mark);
|
||
throw new exports.ScannerError("while scanning a directive", start_mark, "expected a digit or '.' but found " + this.peek(), this.peek() !== "." ? this.get_mark() : void 0);
|
||
this.forward();
|
||
minor = this.scan_yaml_directive_number(start_mark);
|
||
throw new exports.ScannerError("while scanning a directive", start_mark, "expected a digit or ' ' but found " + this.peek(), (_ref1 = this.peek(), __indexOf.call(C_LB + "\0 ", _ref1) < 0) ? this.get_mark() : void 0);
|
||
return [ major, minor ];
|
||
};
|
||
Scanner.prototype.scan_yaml_directive_number = function(start_mark) {
|
||
var char, length, value, _ref1;
|
||
char = this.peek();
|
||
throw new exports.ScannerError("while scanning a directive", start_mark, "expected a digit but found " + char, !("0" <= char && char <= "9") ? this.get_mark() : void 0);
|
||
length = 0;
|
||
while ("0" <= (_ref1 = this.peek(length)) && _ref1 <= "9") {
|
||
length++;
|
||
}
|
||
value = parseInt(this.prefix(length));
|
||
this.forward(length);
|
||
return value;
|
||
};
|
||
Scanner.prototype.scan_tag_directive_value = function(start_mark) {
|
||
var handle, prefix;
|
||
while (this.peek() === " ") {
|
||
this.forward();
|
||
}
|
||
handle = this.scan_tag_directive_handle(start_mark);
|
||
while (this.peek() === " ") {
|
||
this.forward();
|
||
}
|
||
prefix = this.scan_tag_directive_prefix(start_mark);
|
||
return [ handle, prefix ];
|
||
};
|
||
Scanner.prototype.scan_tag_directive_handle = function(start_mark) {
|
||
var char, value;
|
||
value = this.scan_tag_handle("directive", start_mark);
|
||
char = this.peek();
|
||
throw new exports.ScannerError("while scanning a directive", start_mark, "expected ' ' but found " + char, char !== " " ? this.get_mark() : void 0);
|
||
return value;
|
||
};
|
||
Scanner.prototype.scan_tag_directive_prefix = function(start_mark) {
|
||
var char, value;
|
||
value = this.scan_tag_uri("directive", start_mark);
|
||
char = this.peek();
|
||
throw new exports.ScannerError("while scanning a directive", start_mark, "expected ' ' but found " + char, __indexOf.call(C_LB + "\0 ", char) < 0 ? this.get_mark() : void 0);
|
||
return value;
|
||
};
|
||
Scanner.prototype.scan_directive_ignored_line = function(start_mark) {
|
||
var char, _ref1;
|
||
while (this.peek() === " ") {
|
||
this.forward();
|
||
}
|
||
if (this.peek() === "#") {
|
||
while (_ref1 = this.peek(), __indexOf.call(C_LB + "\0", _ref1) < 0) {
|
||
this.forward();
|
||
}
|
||
}
|
||
char = this.peek();
|
||
throw new exports.ScannerError("while scanning a directive", start_mark, "expected a comment or a line break but found " + char, __indexOf.call(C_LB + "\0", char) < 0 ? this.get_mark() : void 0);
|
||
return this.scan_line_break();
|
||
};
|
||
Scanner.prototype.scan_anchor = function(TokenClass) {
|
||
var char, indicator, length, name, start_mark, value;
|
||
start_mark = this.get_mark();
|
||
indicator = this.peek();
|
||
if (indicator === "*") {
|
||
name = "alias";
|
||
} else {
|
||
name = "anchor";
|
||
}
|
||
this.forward();
|
||
length = 0;
|
||
char = this.peek(length);
|
||
while ("0" <= char && char <= "9" || "A" <= char && char <= "Z" || "a" <= char && char <= "z" || __indexOf.call("-_", char) >= 0) {
|
||
length++;
|
||
char = this.peek(length);
|
||
}
|
||
if (length === 0) {
|
||
throw new exports.ScannerError("while scanning an " + name, start_mark, "expected alphabetic or numeric character but found '" + char + "'", this.get_mark());
|
||
}
|
||
value = this.prefix(length);
|
||
this.forward(length);
|
||
char = this.peek();
|
||
if (__indexOf.call(C_LB + C_WS + "\0" + "?:,]}%@`", char) < 0) {
|
||
throw new exports.ScannerError("while scanning an " + name, start_mark, "expected alphabetic or numeric character but found '" + char + "'", this.get_mark());
|
||
}
|
||
return new TokenClass(value, start_mark, this.get_mark());
|
||
};
|
||
Scanner.prototype.scan_tag = function() {
|
||
var char, handle, length, start_mark, suffix, use_handle;
|
||
start_mark = this.get_mark();
|
||
char = this.peek(1);
|
||
if (char === "<") {
|
||
handle = null;
|
||
this.forward(2);
|
||
suffix = this.scan_tag_uri("tag", start_mark);
|
||
if (this.peek() !== ">") {
|
||
throw new exports.ScannerError("while parsing a tag", start_mark, "expected '>' but found " + this.peek(), this.get_mark());
|
||
}
|
||
this.forward();
|
||
} else if (__indexOf.call(C_LB + C_WS + "\0", char) >= 0) {
|
||
handle = null;
|
||
suffix = "!";
|
||
this.forward();
|
||
} else {
|
||
length = 1;
|
||
use_handle = false;
|
||
while (__indexOf.call(C_LB + "\0 ", char) < 0) {
|
||
if (char === "!") {
|
||
use_handle = true;
|
||
break;
|
||
}
|
||
length++;
|
||
char = this.peek(length);
|
||
}
|
||
if (use_handle) {
|
||
handle = this.scan_tag_handle("tag", start_mark);
|
||
} else {
|
||
handle = "!";
|
||
this.forward();
|
||
}
|
||
suffix = this.scan_tag_uri("tag", start_mark);
|
||
}
|
||
char = this.peek();
|
||
if (__indexOf.call(C_LB + "\0 ", char) < 0) {
|
||
throw new exports.ScannerError("while scanning a tag", start_mark, "expected ' ' but found " + char, this.get_mark());
|
||
}
|
||
return new tokens.TagToken([ handle, suffix ], start_mark, this.get_mark());
|
||
};
|
||
Scanner.prototype.scan_block_scalar = function(style) {
|
||
var breaks, chomping, chunks, end_mark, folded, increment, indent, leading_non_space, length, line_break, max_indent, min_indent, start_mark, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7;
|
||
folded = style === ">";
|
||
chunks = [];
|
||
start_mark = this.get_mark();
|
||
this.forward();
|
||
_ref1 = this.scan_block_scalar_indicators(start_mark), chomping = _ref1[0], increment = _ref1[1];
|
||
this.scan_block_scalar_ignored_line(start_mark);
|
||
min_indent = this.indent + 1;
|
||
if (min_indent < 1) {
|
||
min_indent = 1;
|
||
}
|
||
if (increment == null) {
|
||
_ref2 = this.scan_block_scalar_indentation(), breaks = _ref2[0], max_indent = _ref2[1], end_mark = _ref2[2];
|
||
indent = Math.max(min_indent, max_indent);
|
||
} else {
|
||
indent = min_indent + increment - 1;
|
||
_ref3 = this.scan_block_scalar_breaks(indent), breaks = _ref3[0], end_mark = _ref3[1];
|
||
}
|
||
line_break = "";
|
||
while (this.column === indent && this.peek() !== "\0") {
|
||
chunks = chunks.concat(breaks);
|
||
leading_non_space = (_ref4 = this.peek(), __indexOf.call(" ", _ref4) < 0);
|
||
length = 0;
|
||
while (_ref5 = this.peek(length), __indexOf.call(C_LB + "\0", _ref5) < 0) {
|
||
length++;
|
||
}
|
||
chunks.push(this.prefix(length));
|
||
this.forward(length);
|
||
line_break = this.scan_line_break();
|
||
_ref6 = this.scan_block_scalar_breaks(indent), breaks = _ref6[0], end_mark = _ref6[1];
|
||
if (this.column === indent && this.peek() !== "\0") {
|
||
if (folded && line_break === "\n" && leading_non_space && (_ref7 = this.peek(), __indexOf.call(" ", _ref7) < 0)) {
|
||
if (util.is_empty(breaks)) {
|
||
chunks.push(" ");
|
||
}
|
||
} else {
|
||
chunks.push(line_break);
|
||
}
|
||
} else {
|
||
break;
|
||
}
|
||
}
|
||
if (chomping !== false) {
|
||
chunks.push(line_break);
|
||
}
|
||
if (chomping === true) {
|
||
chunks = chunks.concat(breaks);
|
||
}
|
||
return new tokens.ScalarToken(chunks.join(""), false, start_mark, end_mark, style);
|
||
};
|
||
Scanner.prototype.scan_block_scalar_indicators = function(start_mark) {
|
||
var char, chomping, increment;
|
||
chomping = null;
|
||
increment = null;
|
||
char = this.peek();
|
||
if (__indexOf.call("+-", char) >= 0) {
|
||
chomping = char === "+";
|
||
this.forward();
|
||
char = this.peek();
|
||
if (__indexOf.call(C_NUMBERS, char) >= 0) {
|
||
increment = parseInt(char);
|
||
if (increment === 0) {
|
||
throw new exports.ScannerError("while scanning a block scalar", start_mark, "expected indentation indicator in the range 1-9 but found 0", this.get_mark());
|
||
}
|
||
this.forward();
|
||
}
|
||
} else if (__indexOf.call(C_NUMBERS, char) >= 0) {
|
||
increment = parseInt(char);
|
||
if (increment === 0) {
|
||
throw new exports.ScannerError("while scanning a block scalar", start_mark, "expected indentation indicator in the range 1-9 but found 0", this.get_mark());
|
||
}
|
||
this.forward();
|
||
char = this.peek();
|
||
if (__indexOf.call("+-", char) >= 0) {
|
||
chomping = char === "+";
|
||
this.forward();
|
||
}
|
||
}
|
||
char = this.peek();
|
||
if (__indexOf.call(C_LB + "\0 ", char) < 0) {
|
||
throw new exports.ScannerError("while scanning a block scalar", start_mark, "expected chomping or indentation indicators, but found " + char, this.get_mark());
|
||
}
|
||
return [ chomping, increment ];
|
||
};
|
||
Scanner.prototype.scan_block_scalar_ignored_line = function(start_mark) {
|
||
var char, _ref1;
|
||
while (this.peek() === " ") {
|
||
this.forward();
|
||
}
|
||
if (this.peek() === "#") {
|
||
while (_ref1 = this.peek(), __indexOf.call(C_LB + "\0", _ref1) < 0) {
|
||
this.forward();
|
||
}
|
||
}
|
||
char = this.peek();
|
||
if (__indexOf.call(C_LB + "\0", char) < 0) {
|
||
throw new exports.ScannerError("while scanning a block scalar", start_mark, "expected a comment or a line break but found " + char, this.get_mark());
|
||
}
|
||
return this.scan_line_break();
|
||
};
|
||
Scanner.prototype.scan_block_scalar_indentation = function() {
|
||
var chunks, end_mark, max_indent, _ref1;
|
||
chunks = [];
|
||
max_indent = 0;
|
||
end_mark = this.get_mark();
|
||
while (_ref1 = this.peek(), __indexOf.call(C_LB + " ", _ref1) >= 0) {
|
||
if (this.peek() !== " ") {
|
||
chunks.push(this.scan_line_break());
|
||
end_mark = this.get_mark();
|
||
} else {
|
||
this.forward();
|
||
if (this.column > max_indent) {
|
||
max_indent = this.column;
|
||
}
|
||
}
|
||
}
|
||
return [ chunks, max_indent, end_mark ];
|
||
};
|
||
Scanner.prototype.scan_block_scalar_breaks = function(indent) {
|
||
var chunks, end_mark, _ref1;
|
||
chunks = [];
|
||
end_mark = this.get_mark();
|
||
while (this.column < indent && this.peek() === " ") {
|
||
this.forward();
|
||
}
|
||
while (_ref1 = this.peek(), __indexOf.call(C_LB, _ref1) >= 0) {
|
||
chunks.push(this.scan_line_break());
|
||
end_mark = this.get_mark();
|
||
while (this.column < indent && this.peek() === " ") {
|
||
this.forward();
|
||
}
|
||
}
|
||
return [ chunks, end_mark ];
|
||
};
|
||
Scanner.prototype.scan_flow_scalar = function(style) {
|
||
var chunks, double, quote, start_mark;
|
||
double = style === '"';
|
||
chunks = [];
|
||
start_mark = this.get_mark();
|
||
quote = this.peek();
|
||
this.forward();
|
||
chunks = chunks.concat(this.scan_flow_scalar_non_spaces(double, start_mark));
|
||
while (this.peek() !== quote) {
|
||
chunks = chunks.concat(this.scan_flow_scalar_spaces(double, start_mark));
|
||
chunks = chunks.concat(this.scan_flow_scalar_non_spaces(double, start_mark));
|
||
}
|
||
this.forward();
|
||
return new tokens.ScalarToken(chunks.join(""), false, start_mark, this.get_mark(), style);
|
||
};
|
||
Scanner.prototype.scan_flow_scalar_non_spaces = function(double, start_mark) {
|
||
var char, chunks, code, k, length, _i, _ref1, _ref2;
|
||
chunks = [];
|
||
while (true) {
|
||
length = 0;
|
||
while (_ref1 = this.peek(length), __indexOf.call(C_LB + C_WS + "'\"\\\0", _ref1) < 0) {
|
||
length++;
|
||
}
|
||
if (length !== 0) {
|
||
chunks.push(this.prefix(length));
|
||
this.forward(length);
|
||
}
|
||
char = this.peek();
|
||
if (!double && char === "'" && this.peek(1) === "'") {
|
||
chunks.push("'");
|
||
this.forward(2);
|
||
} else if (double && char === "'" || !double && __indexOf.call('"\\', char) >= 0) {
|
||
chunks.push(char);
|
||
this.forward();
|
||
} else if (double && char === "\\") {
|
||
this.forward();
|
||
char = this.peek();
|
||
if (char in ESCAPE_REPLACEMENTS) {
|
||
chunks.push(ESCAPE_REPLACEMENTS[char]);
|
||
this.forward();
|
||
} else if (char in ESCAPE_CODES) {
|
||
length = ESCAPE_CODES[char];
|
||
this.forward();
|
||
for (k = _i = 0; 0 <= length ? _i < length : _i > length; k = 0 <= length ? ++_i : --_i) {
|
||
if (_ref2 = this.peek(k), __indexOf.call(C_NUMBERS + "ABCDEFabcdef", _ref2) < 0) {
|
||
throw new exports.ScannerError("while scanning a double-quoted scalar", start_mark, "expected escape sequence of " + length + " hexadecimal numbers, but " + "found " + this.peek(k), this.get_mark());
|
||
}
|
||
}
|
||
code = parseInt(this.prefix(length), 16);
|
||
chunks.push(String.fromCharCode(code));
|
||
this.forward(length);
|
||
} else if (__indexOf.call(C_LB, char) >= 0) {
|
||
this.scan_line_break();
|
||
chunks = chunks.concat(this.scan_flow_scalar_breaks(double, start_mark));
|
||
} else {
|
||
throw new exports.ScannerError("while scanning a double-quoted scalar", start_mark, "found unknown escape character " + char, this.get_mark());
|
||
}
|
||
} else {
|
||
return chunks;
|
||
}
|
||
}
|
||
};
|
||
Scanner.prototype.scan_flow_scalar_spaces = function(double, start_mark) {
|
||
var breaks, char, chunks, length, line_break, whitespaces, _ref1;
|
||
chunks = [];
|
||
length = 0;
|
||
while (_ref1 = this.peek(length), __indexOf.call(C_WS, _ref1) >= 0) {
|
||
length++;
|
||
}
|
||
whitespaces = this.prefix(length);
|
||
this.forward(length);
|
||
char = this.peek();
|
||
if (char === "\0") {
|
||
throw new exports.ScannerError("while scanning a quoted scalar", start_mark, "found unexpected end of stream", this.get_mark());
|
||
}
|
||
if (__indexOf.call(C_LB, char) >= 0) {
|
||
line_break = this.scan_line_break();
|
||
breaks = this.scan_flow_scalar_breaks(double, start_mark);
|
||
if (line_break !== "\n") {
|
||
chunks.push(line_break);
|
||
} else if (!breaks) {
|
||
chunks.push(" ");
|
||
}
|
||
chunks = chunks.concat(breaks);
|
||
} else {
|
||
chunks.push(whitespaces);
|
||
}
|
||
return chunks;
|
||
};
|
||
Scanner.prototype.scan_flow_scalar_breaks = function(double, start_mark) {
|
||
var chunks, prefix, _ref1, _ref2, _ref3;
|
||
chunks = [];
|
||
while (true) {
|
||
prefix = this.prefix(3);
|
||
if (prefix === "---" || prefix === "..." && (_ref1 = this.peek(3), __indexOf.call(C_LB + C_WS + "\0", _ref1) >= 0)) {
|
||
throw new exports.ScannerError("while scanning a quoted scalar", start_mark, "found unexpected document separator", this.get_mark());
|
||
}
|
||
while (_ref2 = this.peek(), __indexOf.call(C_WS, _ref2) >= 0) {
|
||
this.forward();
|
||
}
|
||
if (_ref3 = this.peek(), __indexOf.call(C_LB, _ref3) >= 0) {
|
||
chunks.push(this.scan_line_break());
|
||
} else {
|
||
return chunks;
|
||
}
|
||
}
|
||
};
|
||
Scanner.prototype.scan_plain = function() {
|
||
var char, chunks, end_mark, indent, length, spaces, start_mark, _ref1, _ref2;
|
||
chunks = [];
|
||
start_mark = end_mark = this.get_mark();
|
||
indent = this.indent + 1;
|
||
spaces = [];
|
||
while (true) {
|
||
length = 0;
|
||
if (this.peek() === "#") {
|
||
break;
|
||
}
|
||
while (true) {
|
||
char = this.peek(length);
|
||
if (__indexOf.call(C_LB + C_WS + "\0", char) >= 0 || this.flow_level === 0 && char === ":" && (_ref1 = this.peek(length + 1), __indexOf.call(C_LB + C_WS + "\0", _ref1) >= 0) || this.flow_level !== 0 && __indexOf.call(",:?[]{}", char) >= 0) {
|
||
break;
|
||
}
|
||
length++;
|
||
}
|
||
if (this.flow_level !== 0 && char === ":" && (_ref2 = this.peek(length + 1), __indexOf.call(C_LB + C_WS + "\0,[]{}", _ref2) < 0)) {
|
||
this.forward(length);
|
||
throw new exports.ScannerError("while scanning a plain scalar", start_mark, "found unexpected ':'", this.get_mark(), "Please check http://pyyaml.org/wiki/YAMLColonInFlowContext");
|
||
}
|
||
if (length === 0) {
|
||
break;
|
||
}
|
||
this.allow_simple_key = false;
|
||
chunks = chunks.concat(spaces);
|
||
chunks.push(this.prefix(length));
|
||
this.forward(length);
|
||
end_mark = this.get_mark();
|
||
spaces = this.scan_plain_spaces(indent, start_mark);
|
||
if (spaces == null || spaces.length === 0 || this.peek() === "#" || this.flow_level === 0 && this.column < indent) {
|
||
break;
|
||
}
|
||
}
|
||
return new tokens.ScalarToken(chunks.join(""), true, start_mark, end_mark);
|
||
};
|
||
Scanner.prototype.scan_plain_spaces = function(indent, start_mark) {
|
||
var breaks, char, chunks, length, line_break, prefix, whitespaces, _ref1, _ref2, _ref3, _ref4;
|
||
chunks = [];
|
||
length = 0;
|
||
while (_ref1 = this.peek(length), __indexOf.call(" ", _ref1) >= 0) {
|
||
length++;
|
||
}
|
||
whitespaces = this.prefix(length);
|
||
this.forward(length);
|
||
char = this.peek();
|
||
if (__indexOf.call(C_LB, char) >= 0) {
|
||
line_break = this.scan_line_break();
|
||
this.allow_simple_key = true;
|
||
prefix = this.prefix(3);
|
||
if (prefix === "---" || prefix === "..." && (_ref2 = this.peek(3), __indexOf.call(C_LB + C_WS + "\0", _ref2) >= 0)) {
|
||
return;
|
||
}
|
||
breaks = [];
|
||
while (_ref4 = this.peek(), __indexOf.call(C_LB + " ", _ref4) >= 0) {
|
||
if (this.peek() === " ") {
|
||
this.forward();
|
||
} else {
|
||
breaks.push(this.scan_line_break());
|
||
prefix = this.prefix(3);
|
||
if (prefix === "---" || prefix === "..." && (_ref3 = this.peek(3), __indexOf.call(C_LB + C_WS + "\0", _ref3) >= 0)) {
|
||
return;
|
||
}
|
||
}
|
||
}
|
||
if (line_break !== "\n") {
|
||
chunks.push(line_break);
|
||
} else if (breaks.length === 0) {
|
||
chunks.push(" ");
|
||
}
|
||
chunks = chunks.concat(breaks);
|
||
} else if (whitespaces) {
|
||
chunks.push(whitespaces);
|
||
}
|
||
return chunks;
|
||
};
|
||
Scanner.prototype.scan_tag_handle = function(name, start_mark) {
|
||
var char, length, value;
|
||
char = this.peek();
|
||
if (char !== "!") {
|
||
throw new exports.ScannerError("while scanning a " + name, start_mark, "expected '!' but found " + char, this.get_mark());
|
||
}
|
||
length = 1;
|
||
char = this.peek(length);
|
||
if (char !== " ") {
|
||
while ("0" <= char && char <= "9" || "A" <= char && char <= "Z" || "a" <= char && char <= "z" || __indexOf.call("-_", char) >= 0) {
|
||
length++;
|
||
char = this.peek(length);
|
||
}
|
||
if (char !== "!") {
|
||
this.forward(length);
|
||
throw new exports.ScannerError("while scanning a " + name, start_mark, "expected '!' but found " + char, this.get_mark());
|
||
}
|
||
length++;
|
||
}
|
||
value = this.prefix(length);
|
||
this.forward(length);
|
||
return value;
|
||
};
|
||
Scanner.prototype.scan_tag_uri = function(name, start_mark) {
|
||
var char, chunks, length;
|
||
chunks = [];
|
||
length = 0;
|
||
char = this.peek(length);
|
||
while ("0" <= char && char <= "9" || "A" <= char && char <= "Z" || "a" <= char && char <= "z" || __indexOf.call("-;/?:@&=+$,_.!~*'()[]%", char) >= 0) {
|
||
if (char === "%") {
|
||
chunks.push(this.prefix(length));
|
||
this.forward(length);
|
||
length = 0;
|
||
chunks.push(this.scan_uri_escapes(name, start_mark));
|
||
} else {
|
||
length++;
|
||
}
|
||
char = this.peek(length);
|
||
}
|
||
if (length !== 0) {
|
||
chunks.push(this.prefix(length));
|
||
this.forward(length);
|
||
length = 0;
|
||
}
|
||
if (chunks.length === 0) {
|
||
throw new exports.ScannerError("while parsing a " + name, start_mark, "expected URI but found " + char, this.get_mark());
|
||
}
|
||
return chunks.join("");
|
||
};
|
||
Scanner.prototype.scan_uri_escapes = function(name, start_mark) {
|
||
var bytes, k, mark, _i;
|
||
bytes = [];
|
||
mark = this.get_mark();
|
||
while (this.peek() === "%") {
|
||
this.forward();
|
||
for (k = _i = 0; _i <= 2; k = ++_i) {
|
||
throw new exports.ScannerError("while scanning a " + name, start_mark, "expected URI escape sequence of 2 hexadecimal numbers but found " + this.peek(k), this.get_mark());
|
||
}
|
||
bytes.push(String.fromCharCode(parseInt(this.prefix(2), 16)));
|
||
this.forward(2);
|
||
}
|
||
return bytes.join("");
|
||
};
|
||
Scanner.prototype.scan_line_break = function() {
|
||
var char;
|
||
char = this.peek();
|
||
if (__indexOf.call("\r\n
", char) >= 0) {
|
||
if (this.prefix(2) === "\r\n") {
|
||
this.forward(2);
|
||
} else {
|
||
this.forward();
|
||
}
|
||
return "\n";
|
||
} else if (__indexOf.call("\u2028\u2029", char) >= 0) {
|
||
this.forward();
|
||
return char;
|
||
}
|
||
return "";
|
||
};
|
||
return Scanner;
|
||
}();
|
||
}).call(this);
|
||
});
|
||
register({
|
||
"0": [ "./parser" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var MarkedYAMLError, events, tokens, _ref, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) {
|
||
for (var key in parent) {
|
||
if (__hasProp.call(parent, key)) child[key] = parent[key];
|
||
}
|
||
function ctor() {
|
||
this.constructor = child;
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child;
|
||
}, __slice = [].slice;
|
||
events = require("./events");
|
||
MarkedYAMLError = require("./errors").MarkedYAMLError;
|
||
tokens = require("./tokens");
|
||
this.ParserError = function(_super) {
|
||
__extends(ParserError, _super);
|
||
function ParserError() {
|
||
_ref = ParserError.__super__.constructor.apply(this, arguments);
|
||
return _ref;
|
||
}
|
||
return ParserError;
|
||
}(MarkedYAMLError);
|
||
this.Parser = function() {
|
||
var DEFAULT_TAGS;
|
||
DEFAULT_TAGS = {
|
||
"!": "!",
|
||
"!!": "tag:yaml.org,2002:"
|
||
};
|
||
function Parser() {
|
||
this.current_event = null;
|
||
this.yaml_version = null;
|
||
this.tag_handles = {};
|
||
this.states = [];
|
||
this.marks = [];
|
||
this.state = "parse_stream_start";
|
||
}
|
||
Parser.prototype.dispose = function() {
|
||
this.states = [];
|
||
return this.state = null;
|
||
};
|
||
Parser.prototype.check_event = function() {
|
||
var choice, choices, _i, _len;
|
||
choices = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
|
||
if (this.current_event === null) {
|
||
if (this.state != null) {
|
||
this.current_event = this[this.state]();
|
||
}
|
||
}
|
||
if (this.current_event !== null) {
|
||
if (choices.length === 0) {
|
||
return true;
|
||
}
|
||
for (_i = 0, _len = choices.length; _i < _len; _i++) {
|
||
choice = choices[_i];
|
||
if (this.current_event instanceof choice) {
|
||
return true;
|
||
}
|
||
}
|
||
}
|
||
return false;
|
||
};
|
||
Parser.prototype.peek_event = function() {
|
||
if (this.current_event === null && this.state != null) {
|
||
this.current_event = this[this.state]();
|
||
}
|
||
return this.current_event;
|
||
};
|
||
Parser.prototype.get_event = function() {
|
||
var event;
|
||
if (this.current_event === null && this.state != null) {
|
||
this.current_event = this[this.state]();
|
||
}
|
||
event = this.current_event;
|
||
this.current_event = null;
|
||
return event;
|
||
};
|
||
Parser.prototype.parse_stream_start = function() {
|
||
var event, token;
|
||
token = this.get_token();
|
||
event = new events.StreamStartEvent(token.start_mark, token.end_mark);
|
||
this.state = "parse_implicit_document_start";
|
||
return event;
|
||
};
|
||
Parser.prototype.parse_implicit_document_start = function() {
|
||
var end_mark, event, start_mark, token;
|
||
if (!this.check_token(tokens.DirectiveToken, tokens.DocumentStartToken, tokens.StreamEndToken)) {
|
||
this.tag_handles = DEFAULT_TAGS;
|
||
token = this.peek_token();
|
||
start_mark = end_mark = token.start_mark;
|
||
event = new events.DocumentStartEvent(start_mark, end_mark, false);
|
||
this.states.push("parse_document_end");
|
||
this.state = "parse_block_node";
|
||
return event;
|
||
} else {
|
||
return this.parse_document_start();
|
||
}
|
||
};
|
||
Parser.prototype.parse_document_start = function() {
|
||
var end_mark, event, start_mark, tags, token, version, _ref1;
|
||
while (this.check_token(tokens.DocumentEndToken)) {
|
||
this.get_token();
|
||
}
|
||
if (!this.check_token(tokens.StreamEndToken)) {
|
||
start_mark = this.peek_token().start_mark;
|
||
_ref1 = this.process_directives(), version = _ref1[0], tags = _ref1[1];
|
||
if (!this.check_token(tokens.DocumentStartToken)) {
|
||
throw new exports.ParserError("expected '<document start>', but found " + this.peek_token().id, this.peek_token().start_mark);
|
||
}
|
||
token = this.get_token();
|
||
end_mark = token.end_mark;
|
||
event = new events.DocumentStartEvent(start_mark, end_mark, true, version, tags);
|
||
this.states.push("parse_document_end");
|
||
this.state = "parse_document_content";
|
||
} else {
|
||
token = this.get_token();
|
||
event = new events.StreamEndEvent(token.start_mark, token.end_mark);
|
||
if (this.states.length !== 0) {
|
||
throw new Error("assertion error, states should be empty");
|
||
}
|
||
if (this.marks.length !== 0) {
|
||
throw new Error("assertion error, marks should be empty");
|
||
}
|
||
this.state = null;
|
||
}
|
||
return event;
|
||
};
|
||
Parser.prototype.parse_document_end = function() {
|
||
var end_mark, event, explicit, start_mark, token;
|
||
token = this.peek_token();
|
||
start_mark = end_mark = token.start_mark;
|
||
explicit = false;
|
||
if (this.check_token(tokens.DocumentEndToken)) {
|
||
token = this.get_token();
|
||
end_mark = token.end_mark;
|
||
explicit = true;
|
||
}
|
||
event = new events.DocumentEndEvent(start_mark, end_mark, explicit);
|
||
this.state = "parse_document_start";
|
||
return event;
|
||
};
|
||
Parser.prototype.parse_document_content = function() {
|
||
var event;
|
||
if (this.check_token(tokens.DirectiveToken, tokens.DocumentStartToken, tokens.DocumentEndToken, tokens.StreamEndToken)) {
|
||
event = this.process_empty_scalar(this.peek_token().start_mark);
|
||
this.state = this.states.pop();
|
||
return event;
|
||
} else {
|
||
return this.parse_block_node();
|
||
}
|
||
};
|
||
Parser.prototype.process_directives = function() {
|
||
var handle, major, minor, prefix, tag_handles_copy, token, value, _ref1, _ref2, _ref3;
|
||
this.yaml_version = null;
|
||
this.tag_handles = {};
|
||
while (this.check_token(tokens.DirectiveToken)) {
|
||
token = this.get_token();
|
||
if (token.name === "YAML") {
|
||
if (this.yaml_version !== null) {
|
||
throw new exports.ParserError(null, null, "found duplicate YAML directive", token.start_mark);
|
||
}
|
||
_ref1 = token.value, major = _ref1[0], minor = _ref1[1];
|
||
if (major !== 1) {
|
||
throw new exports.ParserError(null, null, "found incompatible YAML document (version 1.* is required)", token.start_mark);
|
||
}
|
||
this.yaml_version = token.value;
|
||
} else if (token.name === "TAG") {
|
||
_ref2 = this.tag_handles, handle = _ref2[0], prefix = _ref2[1];
|
||
if (handle in this.tag_handles) {
|
||
throw new exports.ParserError(null, null, "duplicate tag handle " + handle, token.start_mark);
|
||
}
|
||
this.tag_handles[handle] = prefix;
|
||
}
|
||
}
|
||
tag_handles_copy = null;
|
||
_ref3 = this.tag_handles;
|
||
for (handle in _ref3) {
|
||
if (!__hasProp.call(_ref3, handle)) continue;
|
||
prefix = _ref3[handle];
|
||
if (tag_handles_copy == null) {
|
||
tag_handles_copy = {};
|
||
}
|
||
tag_handles_copy[handle] = prefix;
|
||
}
|
||
value = [ this.yaml_version, tag_handles_copy ];
|
||
for (handle in DEFAULT_TAGS) {
|
||
if (!__hasProp.call(DEFAULT_TAGS, handle)) continue;
|
||
prefix = DEFAULT_TAGS[handle];
|
||
if (!(prefix in this.tag_handles)) {
|
||
this.tag_handles[handle] = prefix;
|
||
}
|
||
}
|
||
return value;
|
||
};
|
||
Parser.prototype.parse_block_node = function() {
|
||
return this.parse_node(true);
|
||
};
|
||
Parser.prototype.parse_flow_node = function() {
|
||
return this.parse_node();
|
||
};
|
||
Parser.prototype.parse_block_node_or_indentless_sequence = function() {
|
||
return this.parse_node(true, true);
|
||
};
|
||
Parser.prototype.parse_node = function(block, indentless_sequence) {
|
||
var anchor, end_mark, event, handle, implicit, node, start_mark, suffix, tag, tag_mark, token;
|
||
if (block == null) {
|
||
block = false;
|
||
}
|
||
if (indentless_sequence == null) {
|
||
indentless_sequence = false;
|
||
}
|
||
if (this.check_token(tokens.AliasToken)) {
|
||
token = this.get_token();
|
||
event = new events.AliasEvent(token.value, token.start_mark, token.end_mark);
|
||
this.state = this.states.pop();
|
||
} else {
|
||
anchor = null;
|
||
tag = null;
|
||
start_mark = end_mark = tag_mark = null;
|
||
if (this.check_token(tokens.AnchorToken)) {
|
||
token = this.get_token();
|
||
start_mark = token.start_mark;
|
||
end_mark = token.end_mark;
|
||
anchor = token.value;
|
||
if (this.check_token(tokens.TagToken)) {
|
||
token = this.get_token();
|
||
tag_mark = token.start_mark;
|
||
end_mark = token.end_mark;
|
||
tag = token.value;
|
||
}
|
||
} else if (this.check_token(tokens.TagToken)) {
|
||
token = this.get_token();
|
||
start_mark = tag_mark = token.start_mark;
|
||
end_mark = token.end_mark;
|
||
tag = token.value;
|
||
if (this.check_token(tokens.AnchorToken)) {
|
||
token = this.get_token();
|
||
end_mark = token.end_mark;
|
||
anchor = token.value;
|
||
}
|
||
}
|
||
if (tag !== null) {
|
||
handle = tag[0], suffix = tag[1];
|
||
if (handle !== null) {
|
||
if (!(handle in this.tag_handles)) {
|
||
throw new exports.ParserError("while parsing a node", start_mark, "found undefined tag handle " + handle, tag_mark);
|
||
}
|
||
tag = this.tag_handles[handle] + suffix;
|
||
} else {
|
||
tag = suffix;
|
||
}
|
||
}
|
||
if (start_mark === null) {
|
||
start_mark = end_mark = this.peek_token().start_mark;
|
||
}
|
||
event = null;
|
||
implicit = tag === null || tag === "!";
|
||
if (indentless_sequence && this.check_token(tokens.BlockEntryToken)) {
|
||
end_mark = this.peek_token().end_mark;
|
||
event = new events.SequenceStartEvent(anchor, tag, implicit, start_mark, end_mark);
|
||
this.state = "parse_indentless_sequence_entry";
|
||
} else {
|
||
if (this.check_token(tokens.ScalarToken)) {
|
||
token = this.get_token();
|
||
end_mark = token.end_mark;
|
||
if (token.plain && tag === null || tag === "!") {
|
||
implicit = [ true, false ];
|
||
} else if (tag === null) {
|
||
implicit = [ false, true ];
|
||
} else {
|
||
implicit = [ false, false ];
|
||
}
|
||
event = new events.ScalarEvent(anchor, tag, implicit, token.value, start_mark, end_mark, token.style);
|
||
this.state = this.states.pop();
|
||
} else if (this.check_token(tokens.FlowSequenceStartToken)) {
|
||
end_mark = this.peek_token().end_mark;
|
||
event = new events.SequenceStartEvent(anchor, tag, implicit, start_mark, end_mark, true);
|
||
this.state = "parse_flow_sequence_first_entry";
|
||
} else if (this.check_token(tokens.FlowMappingStartToken)) {
|
||
end_mark = this.peek_token().end_mark;
|
||
event = new events.MappingStartEvent(anchor, tag, implicit, start_mark, end_mark, true);
|
||
this.state = "parse_flow_mapping_first_key";
|
||
} else if (block && this.check_token(tokens.BlockSequenceStartToken)) {
|
||
end_mark = this.peek_token().end_mark;
|
||
event = new events.SequenceStartEvent(anchor, tag, implicit, start_mark, end_mark, false);
|
||
this.state = "parse_block_sequence_first_entry";
|
||
} else if (block && this.check_token(tokens.BlockMappingStartToken)) {
|
||
end_mark = this.peek_token().end_mark;
|
||
event = new events.MappingStartEvent(anchor, tag, implicit, start_mark, end_mark, false);
|
||
this.state = "parse_block_mapping_first_key";
|
||
} else if (anchor !== null || tag !== null) {
|
||
event = new events.ScalarEvent(anchor, tag, [ implicit, false ], "", start_mark, end_mark);
|
||
this.state = this.states.pop();
|
||
} else {
|
||
if (block) {
|
||
node = "block";
|
||
} else {
|
||
node = "flow";
|
||
}
|
||
token = this.peek_token();
|
||
throw new exports.ParserError("while parsing a " + node + " node", start_mark, "expected the node content, but found " + token.id, token.start_mark);
|
||
}
|
||
}
|
||
}
|
||
return event;
|
||
};
|
||
Parser.prototype.parse_block_sequence_first_entry = function() {
|
||
var token;
|
||
token = this.get_token();
|
||
this.marks.push(token.start_mark);
|
||
return this.parse_block_sequence_entry();
|
||
};
|
||
Parser.prototype.parse_block_sequence_entry = function() {
|
||
var event, token;
|
||
if (this.check_token(tokens.BlockEntryToken)) {
|
||
token = this.get_token();
|
||
if (!this.check_token(tokens.BlockEntryToken, tokens.BlockEndToken)) {
|
||
this.states.push("parse_block_sequence_entry");
|
||
return this.parse_block_node();
|
||
} else {
|
||
this.state = "parse_block_sequence_entry";
|
||
return this.process_empty_scalar(token.end_mark);
|
||
}
|
||
}
|
||
if (!this.check_token(tokens.BlockEndToken)) {
|
||
token = this.peek_token();
|
||
throw new exports.ParserError("while parsing a block collection", this.marks.slice(-1)[0], "expected <block end>, but found " + token.id, token.start_mark);
|
||
}
|
||
token = this.get_token();
|
||
event = new events.SequenceEndEvent(token.start_mark, token.end_mark);
|
||
this.state = this.states.pop();
|
||
this.marks.pop();
|
||
return event;
|
||
};
|
||
Parser.prototype.parse_indentless_sequence_entry = function() {
|
||
var event, token;
|
||
if (this.check_token(tokens.BlockEntryToken)) {
|
||
token = this.get_token();
|
||
if (!this.check_token(tokens.BlockEntryToken, tokens.KeyToken, tokens.ValueToken, tokens.BlockEndToken)) {
|
||
this.states.push("parse_indentless_sequence_entry");
|
||
return this.parse_block_node();
|
||
} else {
|
||
this.state = "parse_indentless_sequence_entry";
|
||
return this.process_empty_scalar(token.end_mark);
|
||
}
|
||
}
|
||
token = this.peek_token();
|
||
event = new events.SequenceEndEvent(token.start_mark, token.start_mark);
|
||
this.state = this.states.pop();
|
||
return event;
|
||
};
|
||
Parser.prototype.parse_block_mapping_first_key = function() {
|
||
var token;
|
||
token = this.get_token();
|
||
this.marks.push(token.start_mark);
|
||
return this.parse_block_mapping_key();
|
||
};
|
||
Parser.prototype.parse_block_mapping_key = function() {
|
||
var event, token;
|
||
if (this.check_token(tokens.KeyToken)) {
|
||
token = this.get_token();
|
||
if (!this.check_token(tokens.KeyToken, tokens.ValueToken, tokens.BlockEndToken)) {
|
||
this.states.push("parse_block_mapping_value");
|
||
return this.parse_block_node_or_indentless_sequence();
|
||
} else {
|
||
this.state = "parse_block_mapping_value";
|
||
return this.process_empty_scalar(token.end_mark);
|
||
}
|
||
}
|
||
if (!this.check_token(tokens.BlockEndToken)) {
|
||
token = this.peek_token();
|
||
throw new exports.ParserError("while parsing a block mapping", this.marks.slice(-1)[0], "expected <block end>, but found " + token.id, token.start_mark);
|
||
}
|
||
token = this.get_token();
|
||
event = new events.MappingEndEvent(token.start_mark, token.end_mark);
|
||
this.state = this.states.pop();
|
||
this.marks.pop();
|
||
return event;
|
||
};
|
||
Parser.prototype.parse_block_mapping_value = function() {
|
||
var token;
|
||
if (this.check_token(tokens.ValueToken)) {
|
||
token = this.get_token();
|
||
if (!this.check_token(tokens.KeyToken, tokens.ValueToken, tokens.BlockEndToken)) {
|
||
this.states.push("parse_block_mapping_key");
|
||
return this.parse_block_node_or_indentless_sequence();
|
||
} else {
|
||
this.state = "parse_block_mapping_key";
|
||
return this.process_empty_scalar(token.end_mark);
|
||
}
|
||
} else {
|
||
this.state = "parse_block_mapping_key";
|
||
token = this.peek_token();
|
||
return this.process_empty_scalar(token.start_mark);
|
||
}
|
||
};
|
||
Parser.prototype.parse_flow_sequence_first_entry = function() {
|
||
var token;
|
||
token = this.get_token();
|
||
this.marks.push(token.start_mark);
|
||
return this.parse_flow_sequence_entry(true);
|
||
};
|
||
Parser.prototype.parse_flow_sequence_entry = function(first) {
|
||
var event, token;
|
||
if (first == null) {
|
||
first = false;
|
||
}
|
||
if (!this.check_token(tokens.FlowSequenceEndToken)) {
|
||
if (!first) {
|
||
if (this.check_token(tokens.FlowEntryToken)) {
|
||
this.get_token();
|
||
} else {
|
||
token = this.peek_token();
|
||
throw new exports.ParserError("while parsing a flow sequence", this.marks.slice(-1)[0], "expected ',' or ']', but got " + token.id, token.start_mark);
|
||
}
|
||
}
|
||
if (this.check_token(tokens.KeyToken)) {
|
||
token = this.peek_token();
|
||
event = new events.MappingStartEvent(null, null, true, token.start_mark, token.end_mark, true);
|
||
this.state = "parse_flow_sequence_entry_mapping_key";
|
||
return event;
|
||
} else if (!this.check_token(tokens.FlowSequenceEndToken)) {
|
||
this.states.push("parse_flow_sequence_entry");
|
||
return this.parse_flow_node();
|
||
}
|
||
}
|
||
token = this.get_token();
|
||
event = new events.SequenceEndEvent(token.start_mark, token.end_mark);
|
||
this.state = this.states.pop();
|
||
this.marks.pop();
|
||
return event;
|
||
};
|
||
Parser.prototype.parse_flow_sequence_entry_mapping_key = function() {
|
||
var token;
|
||
token = this.get_token();
|
||
if (!this.check_token(tokens.ValueToken, tokens.FlowEntryToken, tokens.FlowSequenceEndToken)) {
|
||
this.states.push("parse_flow_sequence_entry_mapping_value");
|
||
return this.parse_flow_node();
|
||
} else {
|
||
this.state = "parse_flow_sequence_entry_mapping_value";
|
||
return this.process_empty_scalar(token.end_mark);
|
||
}
|
||
};
|
||
Parser.prototype.parse_flow_sequence_entry_mapping_value = function() {
|
||
var token;
|
||
if (this.check_token(tokens.ValueToken)) {
|
||
token = this.get_token();
|
||
if (!this.check_token(tokens.FlowEntryToken, tokens.FlowSequenceEndToken)) {
|
||
this.states.push("parse_flow_sequence_entry_mapping_end");
|
||
return this.parse_flow_node();
|
||
} else {
|
||
this.state = "parse_flow_sequence_entry_mapping_end";
|
||
return this.process_empty_scalar(token.end_mark);
|
||
}
|
||
} else {
|
||
this.state = "parse_flow_sequence_entry_mapping_end";
|
||
token = this.peek_token();
|
||
return this.process_empty_scalar(token.start_mark);
|
||
}
|
||
};
|
||
Parser.prototype.parse_flow_sequence_entry_mapping_end = function() {
|
||
var token;
|
||
this.state = "parse_flow_sequence_entry";
|
||
token = this.peek_token();
|
||
return new events.MappingEndEvent(token.start_mark, token.start_mark);
|
||
};
|
||
Parser.prototype.parse_flow_mapping_first_key = function() {
|
||
var token;
|
||
token = this.get_token();
|
||
this.marks.push(token.start_mark);
|
||
return this.parse_flow_mapping_key(true);
|
||
};
|
||
Parser.prototype.parse_flow_mapping_key = function(first) {
|
||
var event, token;
|
||
if (first == null) {
|
||
first = false;
|
||
}
|
||
if (!this.check_token(tokens.FlowMappingEndToken)) {
|
||
if (!first) {
|
||
if (this.check_token(tokens.FlowEntryToken)) {
|
||
this.get_token();
|
||
} else {
|
||
token = this.peek_token();
|
||
throw new exports.ParserError("while parsing a flow mapping", this.marks.slice(-1)[0], "expected ',' or '}', but got " + token.id, token.start_mark);
|
||
}
|
||
}
|
||
if (this.check_token(tokens.KeyToken)) {
|
||
token = this.get_token();
|
||
if (!this.check_token(tokens.ValueToken, tokens.FlowEntryToken, tokens.FlowMappingEndToken)) {
|
||
this.states.push("parse_flow_mapping_value");
|
||
return this.parse_flow_node();
|
||
} else {
|
||
this.state = "parse_flow_mapping_value";
|
||
return this.process_empty_scalar(token.end_mark);
|
||
}
|
||
} else if (!this.check_token(tokens.FlowMappingEndToken)) {
|
||
this.states.push("parse_flow_mapping_empty_value");
|
||
return this.parse_flow_node();
|
||
}
|
||
}
|
||
token = this.get_token();
|
||
event = new events.MappingEndEvent(token.start_mark, token.end_mark);
|
||
this.state = this.states.pop();
|
||
this.marks.pop();
|
||
return event;
|
||
};
|
||
Parser.prototype.parse_flow_mapping_value = function() {
|
||
var token;
|
||
if (this.check_token(tokens.ValueToken)) {
|
||
token = this.get_token();
|
||
if (!this.check_token(tokens.FlowEntryToken, tokens.FlowMappingEndToken)) {
|
||
this.states.push("parse_flow_mapping_key");
|
||
return this.parse_flow_node();
|
||
} else {
|
||
this.state = "parse_flow_mapping_key";
|
||
return this.process_empty_scalar(token.end_mark);
|
||
}
|
||
} else {
|
||
this.state = "parse_flow_mapping_key";
|
||
token = this.peek_token();
|
||
return this.process_empty_scalar(token.start_mark);
|
||
}
|
||
};
|
||
Parser.prototype.parse_flow_mapping_empty_value = function() {
|
||
this.state = "parse_flow_mapping_key";
|
||
return this.process_empty_scalar(this.peek_token().start_mark);
|
||
};
|
||
Parser.prototype.process_empty_scalar = function(mark) {
|
||
return new events.ScalarEvent(null, null, [ true, false ], "", mark, mark);
|
||
};
|
||
return Parser;
|
||
}();
|
||
}).call(this);
|
||
});
|
||
register({
|
||
"0": [ "./resolver" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var YAMLError, nodes, util, _ref, _ref1, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) {
|
||
for (var key in parent) {
|
||
if (__hasProp.call(parent, key)) child[key] = parent[key];
|
||
}
|
||
function ctor() {
|
||
this.constructor = child;
|
||
}
|
||
ctor.prototype = parent.prototype;
|
||
child.prototype = new ctor;
|
||
child.__super__ = parent.prototype;
|
||
return child;
|
||
}, __indexOf = [].indexOf || function(item) {
|
||
for (var i = 0, l = this.length; i < l; i++) {
|
||
if (i in this && this[i] === item) return i;
|
||
}
|
||
return -1;
|
||
};
|
||
nodes = require("./nodes");
|
||
util = require("./util");
|
||
YAMLError = require("./errors").YAMLError;
|
||
this.ResolverError = function(_super) {
|
||
__extends(ResolverError, _super);
|
||
function ResolverError() {
|
||
_ref = ResolverError.__super__.constructor.apply(this, arguments);
|
||
return _ref;
|
||
}
|
||
return ResolverError;
|
||
}(YAMLError);
|
||
this.BaseResolver = function() {
|
||
var DEFAULT_MAPPING_TAG, DEFAULT_SCALAR_TAG, DEFAULT_SEQUENCE_TAG;
|
||
DEFAULT_SCALAR_TAG = "tag:yaml.org,2002:str";
|
||
DEFAULT_SEQUENCE_TAG = "tag:yaml.org,2002:seq";
|
||
DEFAULT_MAPPING_TAG = "tag:yaml.org,2002:map";
|
||
BaseResolver.prototype.yaml_implicit_resolvers = {};
|
||
BaseResolver.prototype.yaml_path_resolvers = {};
|
||
BaseResolver.add_implicit_resolver = function(tag, regexp, first) {
|
||
var char, _base, _i, _len, _ref1, _results;
|
||
if (first == null) {
|
||
first = [ null ];
|
||
}
|
||
if (!this.prototype.hasOwnProperty("yaml_implicit_resolvers")) {
|
||
this.prototype.yaml_implicit_resolvers = util.extend({}, this.prototype.yaml_implicit_resolvers);
|
||
}
|
||
_results = [];
|
||
for (_i = 0, _len = first.length; _i < _len; _i++) {
|
||
char = first[_i];
|
||
_results.push(((_ref1 = (_base = this.prototype.yaml_implicit_resolvers)[char]) != null ? _ref1 : _base[char] = []).push([ tag, regexp ]));
|
||
}
|
||
return _results;
|
||
};
|
||
function BaseResolver() {
|
||
this.resolver_exact_paths = [];
|
||
this.resolver_prefix_paths = [];
|
||
}
|
||
BaseResolver.prototype.descend_resolver = function(current_node, current_index) {
|
||
var depth, exact_paths, kind, path, prefix_paths, _i, _j, _len, _len1, _ref1, _ref2, _ref3, _ref4;
|
||
if (util.is_empty(this.yaml_path_resolvers)) {
|
||
return;
|
||
}
|
||
exact_paths = {};
|
||
prefix_paths = [];
|
||
if (current_node) {
|
||
depth = this.resolver_prefix_paths.length;
|
||
_ref1 = this.resolver_prefix_paths.slice(-1)[0];
|
||
for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
|
||
_ref2 = _ref1[_i], path = _ref2[0], kind = _ref2[1];
|
||
if (this.check_resolver_prefix(depth, path, kind, current_node, current_index)) {
|
||
if (path.length > depth) {
|
||
prefix_paths.push([ path, kind ]);
|
||
} else {
|
||
exact_paths[kind] = this.yaml_path_resolvers[path][kind];
|
||
}
|
||
}
|
||
}
|
||
} else {
|
||
_ref3 = this.yaml_path_resolvers;
|
||
for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) {
|
||
_ref4 = _ref3[_j], path = _ref4[0], kind = _ref4[1];
|
||
if (!path) {
|
||
exact_paths[kind] = this.yaml_path_resolvers[path][kind];
|
||
} else {
|
||
prefix_paths.push([ path, kind ]);
|
||
}
|
||
}
|
||
}
|
||
this.resolver_exact_paths.push(exact_paths);
|
||
return this.resolver_prefix_paths.push(prefix_paths);
|
||
};
|
||
BaseResolver.prototype.ascend_resolver = function() {
|
||
if (util.is_empty(this.yaml_path_resolvers)) {
|
||
return;
|
||
}
|
||
this.resolver_exact_paths.pop();
|
||
return this.resolver_prefix_paths.pop();
|
||
};
|
||
BaseResolver.prototype.check_resolver_prefix = function(depth, path, kind, current_node, current_index) {
|
||
var index_check, node_check, _ref1;
|
||
_ref1 = path[depth - 1], node_check = _ref1[0], index_check = _ref1[1];
|
||
if (typeof node_check === "string") {
|
||
if (current_node.tag !== node_check) {
|
||
return;
|
||
}
|
||
} else if (node_check !== null) {
|
||
if (!(current_node instanceof node_check)) {
|
||
return;
|
||
}
|
||
}
|
||
if (index_check === true && current_index !== null) {
|
||
return;
|
||
}
|
||
if ((index_check === false || index_check === null) && current_index === null) {
|
||
return;
|
||
}
|
||
if (typeof index_check === "string") {
|
||
if (!(current_index instanceof nodes.ScalarNode) && index_check === current_index.value) {
|
||
return;
|
||
}
|
||
} else if (typeof index_check === "number") {
|
||
if (index_check !== current_index) {
|
||
return;
|
||
}
|
||
}
|
||
return true;
|
||
};
|
||
BaseResolver.prototype.resolve = function(kind, value, implicit) {
|
||
var empty, exact_paths, k, regexp, resolvers, tag, _i, _len, _ref1, _ref2, _ref3, _ref4;
|
||
if (kind === nodes.ScalarNode && implicit[0]) {
|
||
if (value === "") {
|
||
resolvers = (_ref1 = this.yaml_implicit_resolvers[""]) != null ? _ref1 : [];
|
||
} else {
|
||
resolvers = (_ref2 = this.yaml_implicit_resolvers[value[0]]) != null ? _ref2 : [];
|
||
}
|
||
resolvers = resolvers.concat((_ref3 = this.yaml_implicit_resolvers[null]) != null ? _ref3 : []);
|
||
for (_i = 0, _len = resolvers.length; _i < _len; _i++) {
|
||
_ref4 = resolvers[_i], tag = _ref4[0], regexp = _ref4[1];
|
||
if (value.match(regexp)) {
|
||
return tag;
|
||
}
|
||
}
|
||
implicit = implicit[1];
|
||
}
|
||
empty = true;
|
||
for (k in this.yaml_path_resolvers) {
|
||
if ({}[k] == null) {
|
||
empty = false;
|
||
}
|
||
}
|
||
if (!empty) {
|
||
exact_paths = this.resolver_exact_paths.slice(-1)[0];
|
||
if (__indexOf.call(exact_paths, kind) >= 0) {
|
||
return exact_paths[kind];
|
||
}
|
||
if (__indexOf.call(exact_paths, null) >= 0) {
|
||
return exact_paths[null];
|
||
}
|
||
}
|
||
if (kind === nodes.ScalarNode) {
|
||
return DEFAULT_SCALAR_TAG;
|
||
}
|
||
if (kind === nodes.SequenceNode) {
|
||
return DEFAULT_SEQUENCE_TAG;
|
||
}
|
||
if (kind === nodes.MappingNode) {
|
||
return DEFAULT_MAPPING_TAG;
|
||
}
|
||
};
|
||
return BaseResolver;
|
||
}();
|
||
this.Resolver = function(_super) {
|
||
__extends(Resolver, _super);
|
||
function Resolver() {
|
||
_ref1 = Resolver.__super__.constructor.apply(this, arguments);
|
||
return _ref1;
|
||
}
|
||
return Resolver;
|
||
}(this.BaseResolver);
|
||
this.Resolver.add_implicit_resolver("tag:yaml.org,2002:bool", /^(?:yes|Yes|YES|true|True|TRUE|on|On|ON|no|No|NO|false|False|FALSE|off|Off|OFF)$/, "yYnNtTfFoO");
|
||
this.Resolver.add_implicit_resolver("tag:yaml.org,2002:float", /^(?:[-+]?(?:[0-9][0-9_]*)\.[0-9_]*(?:[eE][-+][0-9]+)?|\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\.[0-9_]*|[-+]?\.(?:inf|Inf|INF)|\.(?:nan|NaN|NAN))$/, "-+0123456789.");
|
||
this.Resolver.add_implicit_resolver("tag:yaml.org,2002:int", /^(?:[-+]?0b[01_]+|[-+]?0[0-7_]+|[-+]?(?:0|[1-9][0-9_]*)|[-+]?0x[0-9a-fA-F_]+|[-+]?0o[0-7_]+|[-+]?[1-9][0-9_]*(?::[0-5]?[0-9])+)$/, "-+0123456789");
|
||
this.Resolver.add_implicit_resolver("tag:yaml.org,2002:merge", /^(?:<<)$/, "<");
|
||
this.Resolver.add_implicit_resolver("tag:yaml.org,2002:null", /^(?:~|null|Null|NULL|)$/, [ "~", "n", "N", "" ]);
|
||
this.Resolver.add_implicit_resolver("tag:yaml.org,2002:timestamp", /^(?:[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]|[0-9][0-9][0-9][0-9]-[0-9][0-9]?-[0-9][0-9]?(?:[Tt]|[\x20\t]+)[0-9][0-9]?:[0-9][0-9]:[0-9][0-9](?:\.[0-9]*)?(?:[\x20\t]*(?:Z|[-+][0-9][0-9]?(?::[0-9][0-9])?))?)$/, "0123456789");
|
||
this.Resolver.add_implicit_resolver("tag:yaml.org,2002:value", /^(?:=)$/, "=");
|
||
this.Resolver.add_implicit_resolver("tag:yaml.org,2002:yaml", /^(?:!|&|\*)$/, "!&*");
|
||
}).call(this);
|
||
});
|
||
register({
|
||
"0": [ "./loader" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var composer, constructor, parser, reader, resolver, scanner, util;
|
||
util = require("./util");
|
||
reader = require("./reader");
|
||
scanner = require("./scanner");
|
||
parser = require("./parser");
|
||
composer = require("./composer");
|
||
resolver = require("./resolver");
|
||
constructor = require("./constructor");
|
||
this.make_loader = function(Reader, Scanner, Parser, Composer, Resolver, Constructor) {
|
||
if (Reader == null) {
|
||
Reader = reader.Reader;
|
||
}
|
||
if (Scanner == null) {
|
||
Scanner = scanner.Scanner;
|
||
}
|
||
if (Parser == null) {
|
||
Parser = parser.Parser;
|
||
}
|
||
if (Composer == null) {
|
||
Composer = composer.Composer;
|
||
}
|
||
if (Resolver == null) {
|
||
Resolver = resolver.Resolver;
|
||
}
|
||
if (Constructor == null) {
|
||
Constructor = constructor.Constructor;
|
||
}
|
||
return function() {
|
||
var component, components;
|
||
components = [ Reader, Scanner, Parser, Composer, Resolver, Constructor ];
|
||
util.extend.apply(util, [ _Class.prototype ].concat(function() {
|
||
var _i, _len, _results;
|
||
_results = [];
|
||
for (_i = 0, _len = components.length; _i < _len; _i++) {
|
||
component = components[_i];
|
||
_results.push(component.prototype);
|
||
}
|
||
return _results;
|
||
}()));
|
||
function _Class(stream) {
|
||
var _i, _len, _ref;
|
||
components[0].call(this, stream);
|
||
_ref = components.slice(1);
|
||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||
component = _ref[_i];
|
||
component.call(this);
|
||
}
|
||
}
|
||
return _Class;
|
||
}();
|
||
};
|
||
this.Loader = this.make_loader();
|
||
}).call(this);
|
||
});
|
||
register({
|
||
"": [ "yaml" ]
|
||
}, 0, function(global, module, exports, require, window) {
|
||
(function() {
|
||
var fs;
|
||
this.composer = require("./composer");
|
||
this.constructor = require("./constructor");
|
||
this.errors = require("./errors");
|
||
this.events = require("./events");
|
||
this.loader = require("./loader");
|
||
this.nodes = require("./nodes");
|
||
this.parser = require("./parser");
|
||
this.reader = require("./reader");
|
||
this.resolver = require("./resolver");
|
||
this.scanner = require("./scanner");
|
||
this.tokens = require("./tokens");
|
||
this.scan = function(stream, Loader) {
|
||
var loader, _results;
|
||
if (Loader == null) {
|
||
Loader = exports.loader.Loader;
|
||
}
|
||
loader = new Loader(stream);
|
||
_results = [];
|
||
while (loader.check_token()) {
|
||
_results.push(loader.get_token());
|
||
}
|
||
return _results;
|
||
};
|
||
this.parse = function(stream, Loader) {
|
||
var loader, _results;
|
||
if (Loader == null) {
|
||
Loader = exports.loader.Loader;
|
||
}
|
||
loader = new Loader(stream);
|
||
_results = [];
|
||
while (loader.check_event()) {
|
||
_results.push(loader.get_event());
|
||
}
|
||
return _results;
|
||
};
|
||
this.compose = function(stream, Loader) {
|
||
var loader;
|
||
if (Loader == null) {
|
||
Loader = exports.loader.Loader;
|
||
}
|
||
loader = new Loader(stream);
|
||
return loader.get_single_node();
|
||
};
|
||
this.compose_all = function(stream, Loader) {
|
||
var loader, _results;
|
||
if (Loader == null) {
|
||
Loader = exports.loader.Loader;
|
||
}
|
||
loader = new Loader(stream);
|
||
_results = [];
|
||
while (loader.check_node()) {
|
||
_results.push(loader.get_node());
|
||
}
|
||
return _results;
|
||
};
|
||
this.load = function(stream, Loader) {
|
||
var loader;
|
||
if (Loader == null) {
|
||
Loader = exports.loader.Loader;
|
||
}
|
||
loader = new Loader(stream);
|
||
return loader.get_single_data();
|
||
};
|
||
this.load_all = function(stream, Loader) {
|
||
var loader, _results;
|
||
if (Loader == null) {
|
||
Loader = exports.loader.Loader;
|
||
}
|
||
loader = new Loader(stream);
|
||
_results = [];
|
||
while (loader.check_data()) {
|
||
_results.push(loader.get_data());
|
||
}
|
||
return _results;
|
||
};
|
||
if (typeof require !== "undefined" && require !== null && require.extensions) {
|
||
fs = require("fs");
|
||
require.extensions[".yml"] = require.extensions[".yaml"] = function(module, filename) {
|
||
return module.exports = exports.load_all(fs.readFileSync(filename, "utf8"));
|
||
};
|
||
}
|
||
}).call(this);
|
||
});
|
||
root["yaml"] = require_from(null, "")("yaml");
|
||
}).call(this); |