mirror of
https://codeberg.org/yeentown/barkey.git
synced 2025-07-07 12:36:57 +00:00
move parseMutes to a utility file
This commit is contained in:
parent
32b860c352
commit
b4bc58ae4c
2 changed files with 42 additions and 33 deletions
|
@ -34,10 +34,10 @@ SPDX-License-Identifier: AGPL-3.0-only
|
||||||
import { computed, ref, watch } from 'vue';
|
import { computed, ref, watch } from 'vue';
|
||||||
import MkTextarea from '@/components/MkTextarea.vue';
|
import MkTextarea from '@/components/MkTextarea.vue';
|
||||||
import MkButton from '@/components/MkButton.vue';
|
import MkButton from '@/components/MkButton.vue';
|
||||||
import * as os from '@/os.js';
|
|
||||||
import { i18n } from '@/i18n.js';
|
import { i18n } from '@/i18n.js';
|
||||||
import MkFolder from '@/components/MkFolder.vue';
|
import MkFolder from '@/components/MkFolder.vue';
|
||||||
import { checkWordMute } from '@/utility/check-word-mute';
|
import { checkWordMute } from '@/utility/check-word-mute';
|
||||||
|
import { parseMutes } from '@/utility/parse-mutes';
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
muted: (string[] | string)[];
|
muted: (string[] | string)[];
|
||||||
|
@ -66,38 +66,6 @@ watch(mutedWords, () => {
|
||||||
changed.value = true;
|
changed.value = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
function parseMutes(mutes: string) {
|
|
||||||
// split into lines, remove empty lines and unnecessary whitespace
|
|
||||||
const lines = mutes.trim().split('\n').map(line => line.trim()).filter(line => line !== '');
|
|
||||||
const outLines = Array.from(lines) as (string | string[])[];
|
|
||||||
|
|
||||||
// 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
async function save() {
|
async function save() {
|
||||||
try {
|
try {
|
||||||
const parsed = parseMutes(mutedWords.value);
|
const parsed = parseMutes(mutedWords.value);
|
||||||
|
|
41
packages/frontend/src/utility/parse-mutes.ts
Normal file
41
packages/frontend/src/utility/parse-mutes.ts
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
* 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;
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue