關於Markdown
在剛才的導語裡提到,Markdown 是一種用來寫作的輕量級「標記語言」,它用簡潔的文法代替排版,而不像一般我們用的文書處理軟體 Word 或 Pages 有大量的排版、字型設定。它使我們專心於碼字,用「標記」文法,來代替常見的排版格式。例如此文從內容到格式,甚至插圖,鍵盤就可以通通搞定了。目前來看,支援 Markdown 文法的編輯器有很多,包括很多網站(例如簡書)也支援了 Markdown 的文字錄入。Markdown 從寫作到完成,匯出格式隨心所欲,你可以匯出 HTML 格式的檔案用來網站發布,也可以十分方便的匯出 PDF 格式,這種格式寫出的簡曆更能得到 HR 的好感。甚至可以利用 CloudApp 這種雲端服務工具直接上傳至網頁用來分享你的文章,全球最大的輕部落格平台 Tumblr,也支援使用 Mou 這類 Markdown 工具進行編輯並直接上傳。
python的markdown擴充開發
近期使用python的markdown寫了一個文檔小程式,由於需要用到一些額外的功能,所以就對markdown進行了一些簡單的擴充,進而記錄下編寫的模板。直接貼代碼:
#encoding=utf-8 ##前置處理器 from markdown.preprocessors import Preprocessor class CodePreprocessor(Preprocessor): def run(self, lines): new_lines = [] flag_in = False block = [] for line in lines: if line[:3]=='!!!': flag_in = True block.append('' % line[3:].strip()) elif flag_in: if line.strip() and line[0]=='!': block.append(line[1:]) else: flag_in = False block.append('') block.append(line) new_lines.extend(block) block = [] else: new_lines.append(line) if not new_lines and block: new_lines = block return new_lines ##後置處理器 from markdown.postprocessors import Postprocessor class CodePostprocessor(Postprocessor): def run(self, text): t_list = [] for line in text.split('\n'): if line[:5]=='!<': line = line.lstrip('
').replace('
', '')[1:] t_list.append(line) return '\n'.join(t_list) ##擴充主體類 from markdown.extensions import Extension from markdown.util import etree class CodeExtension(Extension): def __init__(self, configs={}): self.config = configs def extendMarkdown(self, md, md_globals): ##註冊擴充,用於markdown.reset時擴充同時reset md.registerExtension(self) ##設定Preprocessor codepreprocessor = CodePreprocessor() #print md.preprocessors.keys() md.preprocessors.add('codepreprocessor', codepreprocessor, 'unescape') ##print md_globals ##markdown全域變數
關於markdown擴充的深入內容,可以查看官方文檔,不過沒有例子,只是手冊而已。但大體能知道有哪些內容組成,在結合上面的檔案結構都是可以寫出來的。下面是調用的代碼:
#encoding=utf-8 import markdown import markdowncode text = ''''' !!!python ! !def foo(): ###title ''' configs = {} myext = markdowncode.CodeExtension(configs=configs) md = markdown.markdown(text, extensions=[myext]) print md
主要擴充了2個功能:
一個是把形如:
!!!python ! !def foo(): ! return 'foo'
轉換成:
def foo(): return 'foo'