UNPKG

@gmod/vcf

Version:

High performance streaming Variant Call Format (VCF) parser in pure JavaScript

83 lines 2.91 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; exports.parseBreakend = parseBreakend; function parseBreakend(breakendString) { const tokens = breakendString.split(/[[\]]/); if (tokens.length > 1) { const MateDirection = breakendString.includes('[') ? 'right' : 'left'; let Join; let Replacement; let MatePosition; for (const tok of tokens) { if (tok) { if (tok.includes(':')) { // this is the remote location MatePosition = tok; Join = Replacement ? 'right' : 'left'; } else { // this is the local alteration Replacement = tok; } } } if (!(MatePosition && Join && Replacement)) { throw new Error(`Invalid breakend: ${breakendString}`); } return { MatePosition, Join, Replacement, MateDirection }; } else { if (breakendString.startsWith('.')) { return { Join: 'left', SingleBreakend: true, Replacement: breakendString.slice(1), }; } else if (breakendString.endsWith('.')) { return { Join: 'right', SingleBreakend: true, Replacement: breakendString.slice(0, -1), }; } else if (breakendString.startsWith('<')) { const res = /<(.*)>(.*)/.exec(breakendString); if (!res) { throw new Error(`failed to parse ${breakendString}`); } const Replacement = res[2]; return Replacement ? { Join: 'left', Replacement, MateDirection: 'right', MatePosition: `<${res[1]}>:1`, } : undefined; } else if (breakendString.includes('<')) { const res = /(.*)<(.*)>/.exec(breakendString); if (!res) { throw new Error(`failed to parse ${breakendString}`); } const Replacement = res[1]; return Replacement ? { Join: 'right', Replacement, MateDirection: 'right', MatePosition: `<${res[2]}>:1`, } : undefined; } } return undefined; } var parse_ts_1 = require("./parse.js"); Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(parse_ts_1).default; } }); //# sourceMappingURL=index.js.map