<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.6.4/showdown.min.js"> </script> <script> // The > will replaced to > when using innerHTML, so replace it back to > // for showdown to render blockquote function blockquote(str) { return str.replace(/\n>/g,'\n>') ; } var converter = new showdown.Converter(); var posts = document.querySelectorAll(".post-body"); var s = ""; Array.prototype.forEach.call(posts, function(el, i) { var idx = el.innerHTML.indexOf("markdown"); if(idx != -1 && idx <= 1) { el.innerHTML = converter.makeHtml(blockquote(el.innerHTML).replace("markdown","")); var pres = el.querySelectorAll("pre"); for (var i = 0; i < pres.length; i++) { pres[i].classList.add("prettyprint"); pres[i].classList.add("linenums:1"); } } }); </script> <script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"> </script>程式相當簡單,不言自明,接著在寫 blog 時只需要注意兩件事 * 在要用 markdown 編寫的文章最開頭放一行 markdown 字串讓 script 知道這一篇文章是用 markdown 寫的,需要做轉換 * 編寫文章時要用 HTML 的模式編寫 上面的程式碼區塊除了 markdown 的轉換之外,也引用了 Google 的 prettify 函式庫來做程式碼的上色 關於程式碼上色的寫法其實跟用 markdwon 之前完全一樣,markdown 有一個好處是他跟 html 相容,你可以直接在 markdown 文件中寫 html 內容,markdown 轉換時不會去動到 html 內容的東西 比較可惜的是若程式碼內有用到角括號,還是要先將角括號轉換成 < 和 > 才能將角括號與角括號內的文字正確顯示出來 若是沒有用 < > 這類跳脫字元直接用 < > 的話,在使用 innerHTML 會被當成是 html tag 並且將角括號內的文字轉成小寫,因為 html 先天就是 case insensitive,各家瀏覽器實作時都將 innerHTML 中的 tag name 轉為小寫 這篇文章就是用 markdown 寫的,使用的感想是寫文時真的舒服多了,markdown 的一個最大優點是它很純粹,很乾淨,沒有要做的包山包海複雜化而是用一些簡單的符號做出連結、標題、段落等效果,寫 blog 其實就只需要這些功能而已,如果真的 markdown 有做不到的部分,大不了直接寫 html 在裡面就好了
2018年11月17日 星期六
Markdown on Google blogger
markdown
用 Google blogger 用很久了,雖然一直覺得 Google blogger 很難用,但是又實在懶得換到其他家或是自己架 blog,最近無意間看到[網路](http://etrex.blogspot.com/2017/03/blogger-code-markdown-prettyprint.html)上有人分享在 blogger 上用 markdown 的方法,便想來試試看,因為一直有聽聞用 markdown 來寫 blog 是很方便的,希望用 markdown 能改善 google blogger 糟糕的使用體驗
要在 blogger 用 markdown 其實很簡單,主要概念是用 javascript 將使用 markdown 的文章內容抓出來,然後用網路上已經有人寫好的 javascript 函式庫 [showdown](https://github.com/showdownjs/showdown) 將 markdown 文章轉為 html 然後再更新回去,像我使用的 javascript 如下
訂閱:
張貼留言 (Atom)
作者已經移除這則留言。
回覆刪除