''' markup / media -- conversion / coercion ''' from peak.rules import abstract, when class htmlstr(str): pass class uhtmlstr(unicode): pass @abstract() def plain_text(s): ''' Returns the text passed as a markup free / plain text string. ''' @abstract() def html_text(s): ''' Returns the text passed as an html marked-up text string. ''' @when(html_text, (str, unicode)) def txt2html(s): return ''.join(['

', s, '

' ]) @when(html_text, (htmlstr, uhtmlstr)) def html2html(s): return s def txt2txt(s): return s when(plain_text, (str,))(txt2txt) when(plain_text, (unicode,))(txt2txt) @when(plain_text, (htmlstr, uhtmlstr)) def html2txt(s): return re.sub(r'<[^>]*?>','',s)