3 \ @spdZddlmZddlmZddlmZddlmZddlm Z Gd d d eZ Gd d d eZ ifd 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@s0eZdZdZddZddZddZdd Zd S) TableProcessorz Process Tables. cCsN|jd}t|dkoLd|dkoLd|dkoLd|dkoL|djddkS) N r|rr-:)r r r )splitlenstrip)selfparentblockrowsr'build/lib/markdown/extensions/tables.pytests zTableProcessor.testcCs|jdjd}|dj}|dj}|dd}d}|jdrFd}g}xj|j||D]Z} | jd r|| jd r||jd qX| jd r|jd qX| jd r|jd qX|jdqXWtj|d } tj| d} |j || ||tj| d} x |D]} |j | j| ||qWdS)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}|jdkrd}|j||}x^t|D]R\}} tj||} y||j| _Wntk rtd| _YnX| r4| jd| q4WdS)z) Given a row of text, build table cells. trtdrthr(N) rr#tagr enumeratertext IndexErrorset) rr*rr(r'r,r0Zcellsiar)rrrr$=s     zTableProcessor._build_rowcCs:|r0|jdr|dd}|jdr0|dd}|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@seZdZdZddZdS)TableExtensionz Add tables to Markdown. cCs|jjjdt|jddS)z3 Add an instance of TableProcessor to BlockParser. rz rutilrr r<rDrrrrs     B