From ffb345ccb5680df4f28bd9ad3c3d1ab8480c99ba Mon Sep 17 00:00:00 2001
From: tamaina <tamaina@hotmail.co.jp>
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 daa228ec51..e2681f5447 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;