mirror of
https://github.com/Instadapp/Swap-Aggregator-Subgraph.git
synced 2024-07-29 21:57:12 +00:00
50 lines
1022 B
JavaScript
50 lines
1022 B
JavaScript
"use strict";
|
|
|
|
exports.parse = parse;
|
|
|
|
var _Document = require("./Document");
|
|
|
|
var _ParseContext = require("./ParseContext");
|
|
|
|
// 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.Document();
|
|
const context = new _ParseContext.ParseContext({
|
|
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;
|
|
} |