| ## @package formatter | |
| # Module caffe2.python.docs.formatter | |
| from __future__ import absolute_import | |
| from __future__ import division | |
| from __future__ import print_function | |
| from __future__ import unicode_literals | |
| from caffe2.python.docs.parser import Parser | |
| class Formatter(object): | |
| def __init__(self): | |
| self.content = "" | |
| def clone(self): | |
| return self.__class__() | |
| def dump(self): | |
| return self.content | |
| def parseAndAdd(self, text): | |
| text = Parser(text, self).parse() | |
| self.addRaw(text) | |
| def addRaw(self, text): | |
| raise Exception('Not yet implemented.') | |
| def addLine(self, text): | |
| raise Exception('Not yet implemented.') | |
| def addLinebreak(self): | |
| raise Exception('Not yet implemented.') | |
| def addHeader(self, text): | |
| raise Exception('Not yet implemented.') | |
| def addEmphasis(self, text): | |
| raise Exception('Not yet implemented.') | |
| def addList(self, textList): | |
| raise Exception('Not yet implemented.') | |
| def addLink(self, text, url): | |
| raise Exception('Not yet implemented.') | |
| def addCode(self, text): | |
| raise Exception('Not yet implemented.') | |
| def addCodeLink(self, text): | |
| raise Exception('Not yet implemented.') | |
| def addTable(self, table): | |
| raise Exception('Not yet implemented.') | |
| def addBreak(self): | |
| raise Exception('Not yet implemented.') | |
| class Markdown(Formatter): | |
| def addRaw(self, text): | |
| self.content += "{text}".format(text=text) | |
| def addLine(self, text, new_line=False): | |
| self.content += "{line}{text}\n".format(line=('\n' if new_line else ''), | |
| text=text) | |
| def addLinebreak(self): | |
| self.content += "\n" | |
| def addHeader(self, text, h=1): | |
| self.addLine("{header} {text}".format(header=h * '#', text=text), True) | |
| def addEmphasis(self, text, s=1): | |
| self.addRaw("{stars}{text}{stars}".format(stars=s * '*', text=text)) | |
| def addList(self, textList): | |
| for text in textList: | |
| self.addLine("- {text}".format(text=text), True) | |
| self.addLinebreak() | |
| def addLink(self, text, url): | |
| self.addRaw("[{text}]({url})".format(text=text, url=url)) | |
| def addCodeLink(self, path, options=None): | |
| self.addRaw("({path})".format(path=path)) | |
| def addCode(self, text, inline=False): | |
| if (inline): | |
| self.content += "`{text}`".format(text=text) | |
| else: | |
| self.addRaw("\n\n```\n{text}```\n\n".format(text=text)) | |
| def addTable(self, table, noTitle=False): | |
| self.addLinebreak() | |
| assert(len(table) > 1) | |
| if noTitle: | |
| table.insert(0, [' ' for i in range(len(table[0]))]) | |
| self.addLine(' | '.join(table[0])) | |
| self.addLine(' | '.join(['----' for i in range(len(table[0]))])) | |
| for row in table[1:]: | |
| self.addLine(' | '.join(row)) | |
| self.addLinebreak() | |
| def addBreak(self): | |
| self.addLine('\n---\n', True) |