This commit is contained in:
Acid Chicken (硫酸鶏) 2019-01-24 20:00:23 +09:00
parent 2bac1a90f0
commit dba2833fe9
No known key found for this signature in database
GPG key ID: 5388F56C75B677A1
3 changed files with 27 additions and 22 deletions

View file

@ -378,14 +378,14 @@ export const pack = async (
//#endregion //#endregion
const nyamap: { [x: string]: string } = { const nyamap: { [x: string]: string } = {
//#region nyanize: ja-JP //#region nyaize: ja-JP
'な': 'にゃ', 'な': 'にゃ',
'ナ': 'ニャ', 'ナ': 'ニャ',
'ナ': 'ニャ' 'ナ': 'ニャ'
//#endregion //#endregion
}; };
//#region nyanize: ko-KR //#region nyaize: ko-KR
const diffKoKr = '냐'.charCodeAt(0) - '나'.charCodeAt(0); const diffKoKr = '냐'.charCodeAt(0) - '나'.charCodeAt(0);
for (let i = '나'.charCodeAt(0); i <= '낳'.charCodeAt(0); i++) for (let i = '나'.charCodeAt(0); i <= '낳'.charCodeAt(0); i++)
nyamap[String.fromCharCode(i)] = String.fromCharCode(i + diffKoKr); nyamap[String.fromCharCode(i)] = String.fromCharCode(i + diffKoKr);
@ -393,6 +393,9 @@ export const pack = async (
const raw: string = _note.text; const raw: string = _note.text;
const stack = [!!_note.user.isCat]; const stack = [!!_note.user.isCat];
if (raw) {
_note.text = '';
for (let i = 0; i < raw.length; i++) { for (let i = 0; i < raw.length; i++) {
const head = raw[i]; const head = raw[i];
@ -412,6 +415,7 @@ export const pack = async (
_note.text += stack[0] && nyamap[head] || head; _note.text += stack[0] && nyamap[head] || head;
} }
}
if (!opts.skipHide) { if (!opts.skipHide) {
await hideNote(_note, meId); await hideNote(_note, meId);

View file

@ -148,16 +148,17 @@ export default async (user: IUser, data: Option, silent = false) => new Promise<
if (data.text) { if (data.text) {
data.text = data.text.trim(); data.text = data.text.trim();
const match = data.text.match(/<\/?!?nya>/ig) || [];
const stack: string[] = []; const stack: string[] = [];
for (const tag of [...data.text.match(/<\/?!?nya>/ig)] for (const tag of [...match]
.map(x => x.toLocaleLowerCase())) .map(x => x.toLocaleLowerCase()))
if (tag.includes('/')) { if (tag.includes('/')) {
if (stack.pop() !== tag.replace('/', '')) if (stack.pop() !== tag.replace('/', ''))
return rej('Invalid nyanize syntax'); return rej('Invalid nyaize syntax');
} else } else
stack.push(tag); stack.push(tag);
if (stack.length) if (stack.length)
return rej('Invalid nyanize syntax'); return rej('Invalid nyaize syntax');
} }
let tags = data.apHashtags; 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 tokens = text ? parse(text) : [];
const cwTokens = data.cw ? parse(data.cw) : []; const cwTokens = data.cw ? parse(data.cw) : [];
const choiceTokens = data.poll && data.poll.choices 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); 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) { async function renderActivity(data: Option, note: INote) {
if (data.localOnly) return null; 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) ? renderAnnounce(data.renote.uri ? data.renote.uri : `${config.url}/notes/${data.renote._id}`, note)
: renderCreate(await renderNote(note, false), note); : renderCreate(await renderNote(note, false), note);

View file

@ -369,7 +369,7 @@ describe('API', () => {
expect(res).have.status(400); expect(res).have.status(400);
})); }));
it('can make nyanize enable', async(async () => { it('can make nyaize enable', async(async () => {
const me = await signup(); const me = await signup();
const post = { const post = {
@ -384,7 +384,7 @@ describe('API', () => {
expect(res.body.createdNote).have.property('text').eql('なんにゃんなんにゃんなん'); 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(); const me = await signup();
await request('/i/update', { await request('/i/update', {