From ffb345ccb5680df4f28bd9ad3c3d1ab8480c99ba Mon Sep 17 00:00:00 2001 From: tamaina Date: Sat, 1 Sep 2018 22:45:27 +0900 Subject: [PATCH] fix #2315 (#2339) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * improve MFM to html * improve html to MFM * missing semicolon * missing semicolon * fix html to MFM タグのリンクは解除するように * fix bug * misssing semicolon * Update html-to-mfm.ts * Update html-to-mfm.ts --- src/mfm/html-to-mfm.ts | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/mfm/html-to-mfm.ts b/src/mfm/html-to-mfm.ts index daa228ec5..e2681f544 100644 --- a/src/mfm/html-to-mfm.ts +++ b/src/mfm/html-to-mfm.ts @@ -33,15 +33,19 @@ export default function(html: string): string { case 'a': const txt = getText(node); + const rel = node.attrs.find((x: any) => x.name == 'rel'); + const href = node.attrs.find((x: any) => x.name == 'href'); + // ハッシュタグ / hrefがない / txtがURL + if ((rel && rel.value.match('tag') !== null) || !href || href.value == txt) { + text += txt; // メンション - if (txt.startsWith('@')) { + } else if (txt.startsWith('@')) { const part = txt.split('@'); if (part.length == 2) { //#region ホスト名部分が省略されているので復元する - const href = new URL(node.attrs.find((x: any) => x.name == 'href').value); - const acct = txt + '@' + href.hostname; + const acct = txt + '@' + (new URL(href.value)).hostname; text += acct; break; //#endregion @@ -49,10 +53,9 @@ export default function(html: string): string { text += txt; break; } - } - - if (node.childNodes) { - node.childNodes.forEach((n: any) => analyze(n)); + // その他 + } else { + text += `[${txt}](${href.value})`; } break;