@krassowski/jupyterlab-lsp
Version:
Language Server Protocol integration for JupyterLab
50 lines • 1.62 kB
JavaScript
class OverridesMap extends Map {
constructor(magic_overrides) {
super(magic_overrides.map(m => [new RegExp(m.pattern), m.replacement]));
}
_override_for(code) {
for (let [key, value] of this) {
if (code.match(key)) {
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
return code.replace(key, value);
}
}
return null;
}
}
export class ReversibleOverridesMap extends OverridesMap {
constructor(magic_overrides) {
super(magic_overrides);
this.overrides = magic_overrides;
}
get reverse() {
return this.type(this.overrides
.filter(override => override.reverse != null)
.map(override => override.reverse));
}
type(overrides) {
return new ReversibleOverridesMap(overrides);
}
override_for(cell) {
return super._override_for(cell);
}
replace_all(raw_lines, map = this) {
let substituted_lines = new Array();
let skip_inspect = new Array();
for (let i = 0; i < raw_lines.length; i++) {
let line = raw_lines[i];
let override = map.override_for(line);
substituted_lines.push(override == null ? line : override);
skip_inspect.push(override != null);
}
return {
lines: substituted_lines,
skip_inspect: skip_inspect
};
}
reverse_replace_all(raw_lines) {
return this.replace_all(raw_lines, this.reverse).lines;
}
}
//# sourceMappingURL=maps.js.map