mirror of
https://codeberg.org/yeentown/barkey.git
synced 2025-12-16 20:04:26 +00:00
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
/*
|
|
* SPDX-FileCopyrightText: syuilo and misskey-project
|
|
* SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
import * as os from '@/os';
|
|
import { i18n } from '@/i18n';
|
|
|
|
export type Mutes = (string | string[])[];
|
|
|
|
export function parseMutes(mutes: string): Mutes {
|
|
// split into lines, remove empty lines and unnecessary whitespace
|
|
const lines = mutes.trim().split('\n').map(line => line.trim()).filter(line => line !== '');
|
|
const outLines: Mutes = Array.from(lines);
|
|
|
|
// check each line if it is a RegExp or not
|
|
for (let i = 0; i < lines.length; i++) {
|
|
const line = lines[i];
|
|
const regexp = line.match(/^\/(.+)\/(.*)$/);
|
|
if (regexp) {
|
|
// check that the RegExp is valid
|
|
try {
|
|
new RegExp(regexp[1], regexp[2]);
|
|
// note that regex lines will not be split by spaces!
|
|
} catch (err: any) {
|
|
// invalid syntax: do not save, do not reset changed flag
|
|
os.alert({
|
|
type: 'error',
|
|
title: i18n.ts.regexpError,
|
|
text: i18n.tsx.regexpErrorDescription({ tab: 'word mute', line: i + 1 }) + '\n' + err.toString(),
|
|
});
|
|
// re-throw error so these invalid settings are not saved
|
|
throw err;
|
|
}
|
|
} else {
|
|
outLines[i] = line.split(' ');
|
|
}
|
|
}
|
|
|
|
return outLines;
|
|
}
|