From 949cd0d80c24e594307f1481c014520944d5c659 Mon Sep 17 00:00:00 2001 From: Liu Jiangyi Date: Mon, 22 Jun 2020 22:49:38 +0800 Subject: [PATCH 1/3] fix: external link indicator, highlight & reply headings --- package-lock.json | 5 +++++ package.json | 1 + public/static/fonts_7/icomoon.css | 4 ++++ public/static/fonts_7/icomoon.svg | 2 ++ public/static/fonts_7/icomoon.ttf | Bin 5740 -> 6460 bytes public/static/fonts_7/icomoon.woff | Bin 5816 -> 3616 bytes src/Common.js | 31 +++++++++++++++++++++++++---- src/Flows.js | 8 +++++++- src/Markdown.css | 3 +++ src/Markdown.js | 16 ++++++++++++++- 10 files changed, 64 insertions(+), 6 deletions(-) create mode 100644 src/Markdown.css diff --git a/package-lock.json b/package-lock.json index db92134..b25264a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6021,6 +6021,11 @@ "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==" }, + "highlight.js": { + "version": "10.1.1", + "resolved": "https://r.cnpmjs.org/highlight.js/download/highlight.js-10.1.1.tgz", + "integrity": "sha1-aRohSKjZIr8S5SopRWag2ZO5TFc=" + }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", diff --git a/package.json b/package.json index 6fc1cf8..5483d13 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "copy-to-clipboard": "^3.0.8", "fix-orientation": "^1.1.0", "gh-pages": "^3.0.0", + "highlight.js": "^10.1.1", "html-to-react": "^1.4.3", "load-script": "^1.0.0", "markdown-it": "^11.0.0", diff --git a/public/static/fonts_7/icomoon.css b/public/static/fonts_7/icomoon.css index 5004159..4e7fc21 100644 --- a/public/static/fonts_7/icomoon.css +++ b/public/static/fonts_7/icomoon.css @@ -99,3 +99,7 @@ .icon-github:before { content: "\eab0"; } + +.icon-new-tab:before { + content: "\ea7e"; +} \ No newline at end of file diff --git a/public/static/fonts_7/icomoon.svg b/public/static/fonts_7/icomoon.svg index 2482297..1400c3b 100644 --- a/public/static/fonts_7/icomoon.svg +++ b/public/static/fonts_7/icomoon.svg @@ -31,4 +31,6 @@ + + \ No newline at end of file diff --git a/public/static/fonts_7/icomoon.ttf b/public/static/fonts_7/icomoon.ttf index 20a0e3860dc6afa9e892a3fca4f496fdc7506820..cce7337680d919f8fd0b696882fdcfba2a6a45d1 100644 GIT binary patch delta 1503 zcma)6Uuaup6hG&FH}~E)S)1D=-%bC8WGh6+*wQRZo2@N3T~dcQr<<07h>bOCqD>R} z$3-8SJQRGC=87*)$(u3|CViMp8F|=z*oz=+>JS++_AmziLD`U|@!UV+UJ8EXoqpfbcORfXOxB@iGT9l3!U%Dq5IS@2NW9l4 z-vq!p;`0loT;oU;)e70Y0KvzkmBpoZ&Of_3{0)FO51?Kz8_ z@N%w{|9kHA4*;Bs#E&ZF)wRrl_oxW1Mf{kxIojZ6|5uk^>z()u+#-bm+?kXw*xI<} zOUYf9U&y%RA7qUEy49LQ+}a&>qwP(ZUN&}p1AP>tlbG5bb>nyR9n~$XXT-@X)b=3U*#Y32H)ZvyvkSj zEBra0;ZytsKhC>(7iWP7f$syi1GfU71WMKl<5WkiA;<^OECD4FvlJRA(4Q$!4k}5s zBO(pq$)8$NK%ws!gn4*~6S#?wg%5>$Y>oXazAIiAcU(c&Dc5<|MaeI1NT11Gc}>2p zj3{T7Unsx1Q+v>YDdGR{&J_{a6?mG0LnyNzqbhtZ9Kr1<`&2>I_|_dZesfQ5AM(5? z)kM(ggj>vPRhe3rI>x6)R2ESqs7BRD6g62J)6^CNy*luxXY|rFU+Mz_ww5$bPv8Whvm-La1?#Cyz~FR5F@_6R3)( z9BfvkJ6I$<=U^AOq3U3X>>oI|8wTJzDhR3f5qhWs8w-Sk4rYX74i*WYvT+Su!0G$g z0TNAYI=CAWa1n~Mg))>#%CHPjTqu{yWddg*4~wu4OOS&VqWQ)3r5u61{P(h-n59H3 zuu6gE0$~`1!&E2C=2upW<>m0`VIq438=NPNoxq^+g`YPBPc1};Er3AH%1}fXN+_d( zUD%Cox*Pkj2Yb9wC$IU*?H5W zcHVS6YtJX*jwbu7W?;guG(F}xOw;k14Til}L z00y8EOAygMGIqMNrcQZ5%of>XEUjmb{M=avSddIg=(!B>wSb_J_a{;d(>t@Tdns-M z4&{@E9&da%HU-qLkseMG;TI*Ut>32jSTdcTpYCT_ihog@Nm;Rey>B9X4roXc(VN!i zGibwgiq|RDOg(Mfzfkd;;^#ELa>mN#X;51HqN_s`zu6Nk!eBpOhfleJtGX7XgY9{- zbi^Pe>=GZQDhV9SHie^=RmFy4s5nqOTO6|ELQmfl=a1unIUgG({(*1uHNML4^4t6- zpXJy1FdyU*-phM<1^077{i42A->BQ_4eG?~ezAL)QLTfTQb%e=O8~li+&lgs&Uq?2 z_C0A+Xl>mXlOOq6z5TmNqf<6lM>eijU-8Mbqw{JbpfzrvbO6c@!$(vtL2 z7UUNBvYe71`kH)qe2*2bEGqB)C;ZQ-)SW(PpJC1Rab8>4za;?*CQF+8nhL#|o9E81 zV9vubeOuMTKH`Tx96%FR+!v85h^Z!J4-1479u^5lJS-8uwTBCk>1)upDi!-k81--f zU09!qS!v5MF@qQ^q{%Fp<3=_&W0_h5JG#|sX2pTwS-|BSv_yWwW$T|e9XE;!-Z_KF)To|cZ8OI1A?nX diff --git a/public/static/fonts_7/icomoon.woff b/public/static/fonts_7/icomoon.woff index 1b7a936603cad500cc32bea72d2f349f42bd24ec..8827eb292d3199774bbe30257c169ff43927187e 100644 GIT binary patch literal 3616 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 literal 5816 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 KByh^lZT|x;d0Vjn diff --git a/src/Common.js b/src/Common.js index f66e2a2..3b9dd56 100644 --- a/src/Common.js +++ b/src/Common.js @@ -81,6 +81,17 @@ export class HighlightedMarkdown extends Component { ) } }, + { + shouldProcessNode: (node) => node.name === 'a', + processNode (node, children) { + return ( + + {children} + + + ) + } + }, { shouldProcessNode (node) { return node.type === 'text' // pid, nickname, search @@ -100,7 +111,10 @@ export class HighlightedMarkdown extends Component { return ( { rule==='url_pid' ? /## : - rule==='url' ? {p} : + rule==='url' ? + {p} + + : rule==='pid' ? {e.preventDefault(); props.show_pid(p.substring(1));}}>{p} : rule==='nickname' ? {p} : rule==='search' ? {p} : @@ -116,10 +130,19 @@ export class HighlightedMarkdown extends Component { processNode: processDefs.processDefaultNode } ] - const renderedMarkdown = renderMd(this.props.text) const parser = new HtmlToReact.Parser() - - return parser.parseWithInstructions(renderedMarkdown, node => node.type !== 'script', processInstructions) + if (props.author && props.text.match(/^(?:#+ |>|```|\t|\s*-|\s*\d+\.)/)) { + const renderedMarkdown = renderMd(props.text) + return ( + <> + {props.author} + {parser.parseWithInstructions(renderedMarkdown, node => node.type !== 'script', processInstructions)} + + ) + } else { + const renderedMarkdown = renderMd((props.author || '') + props.text) + return parser.parseWithInstructions(renderedMarkdown, node => node.type !== 'script', processInstructions) + } } } diff --git a/src/Flows.js b/src/Flows.js index 39e5674..74d0864 100644 --- a/src/Flows.js +++ b/src/Flows.js @@ -74,6 +74,11 @@ class Reply extends PureComponent { } render() { + const replyContent = (this.props.info.text) + const splitIdx = replyContent.indexOf(']') + + const author = replyContent.substr(0, splitIdx + 1), + replyText = replyContent.substr(splitIdx + 2) return (
- +
); diff --git a/src/Markdown.css b/src/Markdown.css new file mode 100644 index 0000000..5739246 --- /dev/null +++ b/src/Markdown.css @@ -0,0 +1,3 @@ +.hljs { + white-space: pre-wrap; +} \ No newline at end of file diff --git a/src/Markdown.js b/src/Markdown.js index d689a03..ef3d7be 100644 --- a/src/Markdown.js +++ b/src/Markdown.js @@ -1,12 +1,26 @@ import MarkdownIt from 'markdown-it' import MarkdownItKaTeX from 'markdown-it-katex' +import hljs from 'highlight.js' +import 'highlight.js/styles/atom-one-dark.css' +import './Markdown.css' import 'katex/dist/katex.min.css' let md = new MarkdownIt({ html: false, linkify: false, - breaks: true + breaks: true, + inline: true, + highlight (str, lang) { + if (lang && hljs.getLanguage(lang)) { + try { + return '
' +
+               hljs.highlight(lang, str, true).value +
+               '
'; + } catch (__) {} + } + return '
' + md.utils.escapeHtml(str) + '
'; + } }).use(MarkdownItKaTeX, { "throwOnError" : false, "errorColor" : "#aa0000" From 5c294acd409e2d04ccc30e4afe7f37e04d24443b Mon Sep 17 00:00:00 2001 From: Liu Jiangyi Date: Mon, 22 Jun 2020 22:53:39 +0800 Subject: [PATCH 2/3] fix: space --- src/Common.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Common.js b/src/Common.js index 3b9dd56..5e38987 100644 --- a/src/Common.js +++ b/src/Common.js @@ -140,7 +140,9 @@ export class HighlightedMarkdown extends Component { ) } else { - const renderedMarkdown = renderMd((props.author || '') + props.text) + let rawMd = props.text + if (props.author) rawMd = props.author + ' ' + rawMd + const renderedMarkdown = renderMd(rawMd) return parser.parseWithInstructions(renderedMarkdown, node => node.type !== 'script', processInstructions) } } From 9e98af36609212aee939873d39449846245c4ea1 Mon Sep 17 00:00:00 2001 From: panda2134 Date: Tue, 23 Jun 2020 09:58:07 +0800 Subject: [PATCH 3/3] Update Common.js --- src/Common.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Common.js b/src/Common.js index 5e38987..aa6e593 100644 --- a/src/Common.js +++ b/src/Common.js @@ -136,14 +136,14 @@ export class HighlightedMarkdown extends Component { return ( <> {props.author} - {parser.parseWithInstructions(renderedMarkdown, node => node.type !== 'script', processInstructions)} + {parser.parseWithInstructions(renderedMarkdown, node => node.type !== 'script', processInstructions) || ''} ) } else { let rawMd = props.text if (props.author) rawMd = props.author + ' ' + rawMd const renderedMarkdown = renderMd(rawMd) - return parser.parseWithInstructions(renderedMarkdown, node => node.type !== 'script', processInstructions) + return (parser.parseWithInstructions(renderedMarkdown, node => node.type !== 'script', processInstructions) || null) } } } @@ -307,4 +307,4 @@ export class ClickHandler extends PureComponent { ) } -} \ No newline at end of file +}