\ @sdZddlmZddlmZddlmZddlmZddlm Z Gd d d eZ Gd d d eZ id dZ dS)aL Tables Extension for Python-Markdown ==================================== Added parsing of tables to Python-Markdown. A simple example: First Header | Second Header ------------- | ------------- Content Cell | Content Cell Content Cell | Content Cell Copyright 2009 - [Waylan Limberg](http://achinghead.com) )absolute_import)unicode_literals) Extension)BlockProcessor)etreec@sFeZdZdZddZddZddZdd Zd S) TableProcessorz Process Tables. cCsi|jd}t|dkohd|dkohd|dkohd|dkoh|djddkS) N r|rr-:)r r r )splitlenstrip)selfparentblockrowsr'build/lib/markdown/extensions/tables.pytests" zTableProcessor.testcCs|jdjd}|dj}|dj}|dd}d}|jdrfd}ng}x|j||D]} | jd r| jd r|jd q| jd r|jd q| jd r|jd q|jdqWtj|d } tj| d} |j || ||tj| d} x*|D]"} |j | j| ||qUWdS)z& Parse a table block and build table. rr rrNFr Tr centerleftrighttabletheadtbody) poprr startswith _split_rowendswithappendr SubElement _build_row)rrblocksrheaderZ seperatorrborderaligncrrrrowrrrrun s,  zTableProcessor.runc Cstj|d}d}|jdkr0d}n|j||}xzt|D]l\}} tj||} y||j| _Wntk rd| _YnX| rO| jd| qOqOWdS)z) Given a row of text, build table cells. trtdrthr(N) rr#tagr enumeratertext IndexErrorset) rr*rr(r'r,r0Zcellsiar)rrrr$=s  zTableProcessor._build_rowcCsZ|rM|jdr(|dd}n|jdrM|dd}qMn|jdS)z) split a row of text into list of cells. r rN)rr!r)rr*r'rrrr Os zTableProcessor._split_rowN)__name__ __module__ __qualname____doc__rr+r$r rrrrr s    r c@s"eZdZdZddZdS)TableExtensionz Add tables to Markdown. cCs&|jjjdt|jddS)z3 Add an instance of TableProcessor to BlockParser. rz rutilrr r<rDrrrrsB