亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用Python來開發(fā)Markdown腳本擴展的實例分享

 更新時間:2016年03月04日 15:11:42   作者:像風一樣的自由  
這篇文章主要介紹了使用Python來開發(fā)Markdown腳本擴展的實例分享,文中的示例是用來簡單地轉(zhuǎn)換文檔結(jié)構(gòu),主要為了體現(xiàn)一個思路,需要的朋友可以參考下

關(guān)于Markdown

在剛才的導語里提到,Markdown 是一種用來寫作的輕量級「標記語言」,它用簡潔的語法代替排版,而不像一般我們用的字處理軟件 Word 或 Pages 有大量的排版、字體設(shè)置。它使我們專心于碼字,用「標記」語法,來代替常見的排版格式。例如此文從內(nèi)容到格式,甚至插圖,鍵盤就可以通通搞定了。目前來看,支持 Markdown 語法的編輯器有很多,包括很多網(wǎng)站(例如簡書)也支持了 Markdown 的文字錄入。Markdown 從寫作到完成,導出格式隨心所欲,你可以導出 HTML 格式的文件用來網(wǎng)站發(fā)布,也可以十分方便的導出 PDF 格式,這種格式寫出的簡歷更能得到 HR 的好感。甚至可以利用 CloudApp 這種云服務(wù)工具直接上傳至網(wǎng)頁用來分享你的文章,全球最大的輕博客平臺 Tumblr,也支持使用 Mou 這類 Markdown 工具進行編輯并直接上傳。

python的markdown擴展開發(fā)
近期使用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('<pre class="brush: %s;">' % line[3:].strip()) 
      elif flag_in: 
        if line.strip() and line[0]=='!': 
          block.append(line[1:]) 
        else: 
          flag_in = False 
          block.append('</pre>') 
          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]=='<p>!<': 
        line = line.lstrip('<p>').replace('</p>', '')[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)   
         
    ##設(shè)置Preprocessor 
    codepreprocessor = CodePreprocessor() 
    #print md.preprocessors.keys() 
    md.preprocessors.add('codepreprocessor', codepreprocessor, '<normalize_whitespace') 
     
    ##設(shè)置Postprocessor 
    codepostprocessor = CodePostprocessor() 
    #print md.postprocessors.keys() 
    md.postprocessors.add('codepostprocessor', codepostprocessor, '>unescape') 
     
    ##print md_globals  ##markdown全局變量 

         

關(guān)于markdown擴展的深入內(nèi)容,可以查看官方文檔,不過沒有例子,只是手冊而已。但大體能知道有哪些內(nèi)容組成,在結(jié)合上面的文件結(jié)構(gòu)都是可以寫出來的。下面是調(diào)用的代碼:

#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' 

轉(zhuǎn)換成:

<pre class="brush: python;"> 
 
def foo(): 
 return 'foo' 
</pre> 

201634150936573.png (863×488)

相關(guān)文章

最新評論