Hashtag 連結
本頁說明 MDViewer 如何把內文中的 #tag 轉成連結,以及比對規則與限制。
啟用
new MDViewer({
id: "viewer",
sync: { editor: editor },
hashtag: { path: "/search?tag=", target: "_blank" }
});
| 條件 | 結果 |
|---|---|
hashtag.path 為非空字串 |
啟用轉換 |
hashtag.path 為空或未設定 |
不轉換,#tag 原樣輸出 |
使用 MDParser |
不轉換:MDParser 傳給管線的路徑為 null |
輸出
今天的主題 #JavaScript 與 #前端
今天的主題 <a class="tag" href="/search?tag=JavaScript" target="_blank">JavaScript</a> 與 <a class="tag" href="/search?tag=前端" target="_blank">前端</a>
| 項目 | 規則 |
|---|---|
href |
hashtag.path 直接串接標籤文字,不做 URL encode |
| 顯示文字 | 不含 # |
class |
tag,由 NanoMD.css 提供樣式 |
target |
hashtag.target 為 "_blank" 時 _blank,其他值一律 _self |
比對規則
| 規則 | 說明 |
|---|---|
| 前綴 | 半形 # 或全形 # |
| 前方 | 必須緊接一個空白字元(含換行),所以緊貼前文的 #(a#b)不會轉換;行首的 # 前方視為換行,會轉換 |
| 標籤字元 | 中日韓統一表意文字、平假名/片假名、韓文音節、英數字與底線 |
| 結束 | 遇到不在上列範圍的字元(標點、空白、-)即結束 |
| 跳脫 | 寫成 \#tag 時不轉換,輸出 #tag 文字 |
setHashtag 在管線最後執行,程式碼區塊與行內 code 已先換成佔位符,因此其中的 # 不受影響。# 加空白是標題語法,會由 setHeading 先處理。