55 lines
1.2 KiB
JavaScript
55 lines
1.2 KiB
JavaScript
"use strict";
|
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
value: true
|
|
});
|
|
exports.default = parse;
|
|
|
|
var _Document = _interopRequireDefault(require("./Document"));
|
|
|
|
var _ParseContext = _interopRequireDefault(require("./ParseContext"));
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
// Published as 'yaml/parse-cst'
|
|
function parse(src) {
|
|
const cr = [];
|
|
|
|
if (src.indexOf('\r') !== -1) {
|
|
src = src.replace(/\r\n?/g, (match, offset) => {
|
|
if (match.length > 1) cr.push(offset);
|
|
return '\n';
|
|
});
|
|
}
|
|
|
|
const documents = [];
|
|
let offset = 0;
|
|
|
|
do {
|
|
const doc = new _Document.default();
|
|
const context = new _ParseContext.default({
|
|
src
|
|
});
|
|
offset = doc.parse(context, offset);
|
|
documents.push(doc);
|
|
} while (offset < src.length);
|
|
|
|
documents.setOrigRanges = () => {
|
|
if (cr.length === 0) return false;
|
|
|
|
for (let i = 1; i < cr.length; ++i) cr[i] -= i;
|
|
|
|
let crOffset = 0;
|
|
|
|
for (let i = 0; i < documents.length; ++i) {
|
|
crOffset = documents[i].setOrigRanges(cr, crOffset);
|
|
}
|
|
|
|
cr.splice(0, cr.length);
|
|
return true;
|
|
};
|
|
|
|
documents.toString = () => documents.join('...\n');
|
|
|
|
return documents;
|
|
} |