Fix bug
This commit is contained in:
parent
2bac1a90f0
commit
dba2833fe9
3 changed files with 27 additions and 22 deletions
|
@ -378,14 +378,14 @@ export const pack = async (
|
|||
//#endregion
|
||||
|
||||
const nyamap: { [x: string]: string } = {
|
||||
//#region nyanize: ja-JP
|
||||
//#region nyaize: ja-JP
|
||||
'な': 'にゃ',
|
||||
'ナ': 'ニャ',
|
||||
'ナ': 'ニャ'
|
||||
//#endregion
|
||||
};
|
||||
|
||||
//#region nyanize: ko-KR
|
||||
//#region nyaize: ko-KR
|
||||
const diffKoKr = '냐'.charCodeAt(0) - '나'.charCodeAt(0);
|
||||
for (let i = '나'.charCodeAt(0); i <= '낳'.charCodeAt(0); i++)
|
||||
nyamap[String.fromCharCode(i)] = String.fromCharCode(i + diffKoKr);
|
||||
|
@ -393,24 +393,28 @@ export const pack = async (
|
|||
|
||||
const raw: string = _note.text;
|
||||
const stack = [!!_note.user.isCat];
|
||||
for (let i = 0; i < raw.length; i++) {
|
||||
const head = raw[i];
|
||||
if (raw) {
|
||||
_note.text = '';
|
||||
|
||||
if (head === '<') {
|
||||
const [, tag, state] = raw.slice(i).match(/^<((\/?!?)nya>)/i) || [, , , ];
|
||||
for (let i = 0; i < raw.length; i++) {
|
||||
const head = raw[i];
|
||||
|
||||
if (typeof state === 'string') {
|
||||
if (state[0] === '/')
|
||||
stack.shift();
|
||||
else
|
||||
stack.unshift(!state);
|
||||
if (head === '<') {
|
||||
const [, tag, state] = raw.slice(i).match(/^<((\/?!?)nya>)/i) || [, , , ];
|
||||
|
||||
i += tag.length;
|
||||
continue;
|
||||
if (typeof state === 'string') {
|
||||
if (state[0] === '/')
|
||||
stack.shift();
|
||||
else
|
||||
stack.unshift(!state);
|
||||
|
||||
i += tag.length;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_note.text += stack[0] && nyamap[head] || head;
|
||||
_note.text += stack[0] && nyamap[head] || head;
|
||||
}
|
||||
}
|
||||
|
||||
if (!opts.skipHide) {
|
||||
|
|
|
@ -148,16 +148,17 @@ export default async (user: IUser, data: Option, silent = false) => new Promise<
|
|||
if (data.text) {
|
||||
data.text = data.text.trim();
|
||||
|
||||
const match = data.text.match(/<\/?!?nya>/ig) || [];
|
||||
const stack: string[] = [];
|
||||
for (const tag of [...data.text.match(/<\/?!?nya>/ig)]
|
||||
for (const tag of [...match]
|
||||
.map(x => x.toLocaleLowerCase()))
|
||||
if (tag.includes('/')) {
|
||||
if (stack.pop() !== tag.replace('/', ''))
|
||||
return rej('Invalid nyanize syntax');
|
||||
return rej('Invalid nyaize syntax');
|
||||
} else
|
||||
stack.push(tag);
|
||||
if (stack.length)
|
||||
return rej('Invalid nyanize syntax');
|
||||
return rej('Invalid nyaize syntax');
|
||||
}
|
||||
|
||||
let tags = data.apHashtags;
|
||||
|
@ -170,7 +171,7 @@ export default async (user: IUser, data: Option, silent = false) => new Promise<
|
|||
const tokens = text ? parse(text) : [];
|
||||
const cwTokens = data.cw ? parse(data.cw) : [];
|
||||
const choiceTokens = data.poll && data.poll.choices
|
||||
? concat((data.poll.choices as IChoice[]).map(choice => parse(choice.text.replace(/^<\/?!?nya>/ig, ''))))
|
||||
? concat((data.poll.choices as IChoice[]).map(choice => parse(choice.text && choice.text.replace(/^<\/?!?nya>/ig, ''))))
|
||||
: [];
|
||||
|
||||
const combinedTokens = tokens.concat(cwTokens).concat(choiceTokens);
|
||||
|
@ -351,7 +352,7 @@ export default async (user: IUser, data: Option, silent = false) => new Promise<
|
|||
async function renderActivity(data: Option, note: INote) {
|
||||
if (data.localOnly) return null;
|
||||
|
||||
const content = data.renote && !data.text && !data.text.replace(/^<\/?!?nya>/ig, '') && !data.poll && (!data.files || !data.files.length)
|
||||
const content = data.renote && (!data.text || !data.text.replace(/^<\/?!?nya>/ig, '')) && !data.poll && (!data.files || !data.files.length)
|
||||
? renderAnnounce(data.renote.uri ? data.renote.uri : `${config.url}/notes/${data.renote._id}`, note)
|
||||
: renderCreate(await renderNote(note, false), note);
|
||||
|
||||
|
|
|
@ -369,7 +369,7 @@ describe('API', () => {
|
|||
expect(res).have.status(400);
|
||||
}));
|
||||
|
||||
it('can make nyanize enable', async(async () => {
|
||||
it('can make nyaize enable', async(async () => {
|
||||
const me = await signup();
|
||||
|
||||
const post = {
|
||||
|
@ -384,7 +384,7 @@ describe('API', () => {
|
|||
expect(res.body.createdNote).have.property('text').eql('なんにゃんなんにゃんなん');
|
||||
}));
|
||||
|
||||
it('can make nyanize disable', async(async () => {
|
||||
it('can make nyaize disable', async(async () => {
|
||||
const me = await signup();
|
||||
|
||||
await request('/i/update', {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue