fix our ruby/group hack
This commit is contained in:
parent
29b1f61d67
commit
d426e2a7ef
2 changed files with 18 additions and 9 deletions
|
@ -179,7 +179,8 @@ export class MfmService {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case 'ruby': {
|
// this is here only to catch upstream changes!
|
||||||
|
case 'ruby--': {
|
||||||
let ruby: [string, string][] = [];
|
let ruby: [string, string][] = [];
|
||||||
for (const child of node.childNodes) {
|
for (const child of node.childNodes) {
|
||||||
if (child.nodeName === 'rp') {
|
if (child.nodeName === 'rp') {
|
||||||
|
@ -310,9 +311,16 @@ export class MfmService {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (child.nodeName === 'rt') {
|
if (child.nodeName === 'rt') {
|
||||||
text += '$[ruby $[group ';
|
// the only case in which we don't need a `$[group ]`
|
||||||
|
// is when both sides of the ruby are simple words
|
||||||
|
const needsGroup = nonRtNodes.length > 1 ||
|
||||||
|
/\s|\[|\]/.test(getText(nonRtNodes[0])) ||
|
||||||
|
/\s|\[|\]/.test(getText(child)) ;
|
||||||
|
text += '$[ruby ';
|
||||||
|
if (needsGroup) text += '$[group ';
|
||||||
appendChildren(nonRtNodes);
|
appendChildren(nonRtNodes);
|
||||||
text += '] ';
|
if (needsGroup) text += ']';
|
||||||
|
text += ' ';
|
||||||
analyze(child);
|
analyze(child);
|
||||||
text += ']';
|
text += ']';
|
||||||
nonRtNodes = [];
|
nonRtNodes = [];
|
||||||
|
@ -320,6 +328,7 @@ export class MfmService {
|
||||||
}
|
}
|
||||||
nonRtNodes.push(child);
|
nonRtNodes.push(child);
|
||||||
}
|
}
|
||||||
|
appendChildren(nonRtNodes);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,16 +158,16 @@ describe('MfmService', () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
test('ruby with spaces', () => {
|
test('ruby with spaces', () => {
|
||||||
assert.deepStrictEqual(mfmService.fromHtml('<p>a <ruby>Miss key<rp>(</rp><rt>ミスキー</rt><rp>)</rp> b</ruby> c</p>'), 'a Miss key(ミスキー) b c');
|
assert.deepStrictEqual(mfmService.fromHtml('<p>a <ruby>Miss key<rp>(</rp><rt>ミスキー</rt><rp>)</rp> b</ruby> c</p>'), 'a $[ruby $[group Miss key] ミスキー] b c');
|
||||||
assert.deepStrictEqual(mfmService.fromHtml('<p>a <ruby>Misskey<rp>(</rp><rt>ミス キー</rt><rp>)</rp> b</ruby> c</p>'), 'a Misskey(ミス キー) b c');
|
assert.deepStrictEqual(mfmService.fromHtml('<p>a <ruby>Misskey<rp>(</rp><rt>ミス キー</rt><rp>)</rp> b</ruby> c</p>'), 'a $[ruby $[group Misskey] ミス キー] b c');
|
||||||
assert.deepStrictEqual(
|
assert.deepStrictEqual(
|
||||||
mfmService.fromHtml('<p>a <ruby>Misskey<rp>(</rp><rt>ミスキー</rt><rp>)</rp>Misskey<rp>(</rp><rt>ミス キー</rt><rp>)</rp>Misskey<rp>(</rp><rt>ミスキー</rt><rp>)</rp></ruby> b</p>'),
|
mfmService.fromHtml('<p>a <ruby>Misskey<rp>(</rp><rt>ミスキー</rt><rp>)</rp>Misskey<rp>(</rp><rt>ミス キー</rt><rp>)</rp>Misskey<rp>(</rp><rt>ミスキー</rt><rp>)</rp></ruby> b</p>'),
|
||||||
'a Misskey(ミスキー)Misskey(ミス キー)Misskey(ミスキー) b'
|
'a $[ruby Misskey ミスキー]$[ruby $[group Misskey] ミス キー]$[ruby Misskey ミスキー] b'
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('ruby with other inline tags', () => {
|
test('ruby with other inline tags', () => {
|
||||||
assert.deepStrictEqual(mfmService.fromHtml('<p>a <ruby><strong>Misskey</strong><rp>(</rp><rt>ミスキー</rt><rp>)</rp> b</ruby> c</p>'), 'a **Misskey**(ミスキー) b c');
|
assert.deepStrictEqual(mfmService.fromHtml('<p>a <ruby><strong>Misskey</strong><rp>(</rp><rt>ミスキー</rt><rp>)</rp> b</ruby> c</p>'), 'a $[ruby **Misskey** ミスキー] b c');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('mention', () => {
|
test('mention', () => {
|
||||||
|
|
Loading…
Add table
Reference in a new issue