def dump(self, tree): if tree.meta and not tree.ispartial: tree.meta['Content-Type'] = 'text/x-zim-wiki' tree.meta['Wiki-Format'] = WIKI_FORMAT_VERSION # TODO force content type is first line return [dump_header_lines(tree.meta), '\n'] + TextDumper.dump( self, tree) else: return TextDumper.dump(self, tree)
def dump(self, tree, file_output=False): # If file_output=True we add meta headers to the output # would be nicer to handle this via a template, but works for now if file_output: header = ( ('Content-Type', 'text/x-zim-wiki'), ('Wiki-Format', WIKI_FORMAT_VERSION), ) return [dump_header_lines(header, getattr(tree, 'meta', {})), '\n'] \ + TextDumper.dump(self, tree) else: return TextDumper.dump(self, tree)
def dump_li(self, tag, attrib, strings): # Markdown does not support letters as list bullets - convert to number assert self.context[-1].tag in (BULLETLIST, NUMBEREDLIST), 'Do not support raw pageview output here' if self.context[-1].tag == NUMBEREDLIST \ and not self.context[-1].attrib.get('_iter'): # First item on this level iter = self.context[-1].attrib.get('start', '1') self.context[-1].attrib['_iter'] = convert_list_iter_letter_to_number(iter) return TextDumper.dump_li(self, tag, attrib, strings)
def dump_list(self, tag, attrib, strings): # OPEN ISSUE: no indent for lists if 'indent' in attrib: del attrib['indent'] strings = TextDumper.dump_list(self, tag, attrib, strings) if self.context[-1].tag in (BULLETLIST, NUMBEREDLIST): # sub-list return strings else: # top level list, wrap in empty lines strings.insert(0, '\n') strings.append('\n') return strings
def dump(self, tree): assert isinstance(tree, ParseTree) assert self.linker, 'LaTeX dumper needs a linker object' self.linker.set_usebase(False) self.document_type = self.template_options.get('document_type') # Option set in template - potentially tainted value if not self.document_type in ('report', 'article','book'): logger.warn('No document type set in template, assuming "report"') self.document_type = 'report' # arbitrary default else: logger.info('used document type: %s' % self.document_type) return TextDumper.dump(self, tree)
def dump(self, tree): assert isinstance(tree, ParseTree) assert self.linker, 'LaTeX dumper needs a linker object' self.linker.set_usebase(False) self.document_type = self.template_options.get('document_type') # Option set in template - potentially tainted value if not self.document_type in ('report', 'article', 'book'): logger.warn('No document type set in template, assuming "report"') self.document_type = 'report' # arbitrary default else: logger.info('used document type: %s' % self.document_type) return TextDumper.dump(self, tree)
def dump_ol(self, tag, attrib, strings): start = attrib.get('start', 1) if start in string.ascii_lowercase: type = 'a' start = string.ascii_lowercase.index(start) + 1 elif start in string.ascii_uppercase: type = 'A' start = string.ascii_uppercase.index(start) + 1 else: type = '1' start = int(start) strings.insert(0, '\\begin{enumerate}[%s]\n' % type) if start > 1: strings.insert(1, '\setcounter{enumi}{%i}\n' % (start - 1)) strings.append('\\end{enumerate}\n') return TextDumper.dump_ol(self, tag, attrib, strings)
def dump_ol(self, tag, attrib, strings): start = attrib.get('start', 1) if start in string.lowercase: type = 'a' start = string.lowercase.index(start) + 1 elif start in string.uppercase: type = 'A' start = string.uppercase.index(start) + 1 else: type = '1' start = int(start) strings.insert(0, '\\begin{enumerate}[%s]\n' % type) if start > 1: strings.insert(1, '\setcounter{enumi}{%i}\n' % (start-1)) strings.append('\\end{enumerate}\n') return TextDumper.dump_ol(self, tag, attrib, strings)
def dump_ol(self, tag, attrib, strings): start = attrib.get('start', 1) if os.name == 'nt': start = start.encode('utf-8') # Weird locale dependent behavior if start in string.lowercase: type = 'a' start = string.lowercase.index(start) + 1 elif start in string.uppercase: type = 'A' start = string.uppercase.index(start) + 1 else: type = '1' start = int(start) strings.insert(0, '\\begin{enumerate}[%s]\n' % type) if start > 1: strings.insert(1, '\setcounter{enumi}{%i}\n' % (start-1)) strings.append('\\end{enumerate}\n') return TextDumper.dump_ol(self, tag, attrib, strings)
def dump(self, tree): assert self.linker, 'rst dumper needs a linker object' return TextDumper.dump(self, tree)
def dump_ul(self, tag, attrib, strings): strings.insert(0, '\\begin{itemize}\n') strings.append('\\end{itemize}\n') return TextDumper.dump_ul(self, tag, attrib, strings)
def dump(self, tree): assert self.linker, 'Markdown dumper needs a linker object' self.linker.set_usebase(True) return TextDumper.dump(self, tree)
def dump(self, tree): assert isinstance(tree, ParseTree) assert self.linker, 'LaTeX dumper needs a linker object' self.document_type = self.template_options['document_type'] logger.info('used document type: %s' % self.document_type) return TextDumper.dump(self, tree)