def main(): """Filters the document AST.""" # Get the output format, document and metadata fmt = args.fmt doc = json.loads(STDIN.read()) meta = doc[0]['unMeta'] # Process the metadata variables process(meta) # First pass altered = functools.reduce( lambda x, action: walk(x, action, fmt, meta), [attach_attrs_math, process_equations, detach_attrs_math], doc) # Second pass process_refs = process_refs_factory(references.keys()) replace_refs = replace_refs_factory(references, cleveref_default, plusname, starname, 'equation') altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [repair_refs, process_refs, replace_refs], altered) # Dump the results json.dump(altered, STDOUT) # Flush stdout STDOUT.flush()
def main(): """Filters the document AST.""" # pylint: disable=global-statement global PANDOCVERSION global AttrMath # Get the output format and document fmt = args.fmt doc = json.loads(STDIN.read()) # Initialize pandocxnos # pylint: disable=too-many-function-args PANDOCVERSION = pandocxnos.init(args.pandocversion, doc) # Element primitives AttrMath = elt('Math', 3) # Chop up the doc meta = doc['meta'] if PANDOCVERSION >= '1.18' else doc[0]['unMeta'] blocks = doc['blocks'] if PANDOCVERSION >= '1.18' else doc[1:] # Process the metadata variables process(meta) # First pass attach_attrs_math = attach_attrs_factory(Math, allow_space=True) detach_attrs_math = detach_attrs_factory(Math) insert_secnos = insert_secnos_factory(Math) delete_secnos = delete_secnos_factory(Math) altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [attach_attrs_math, insert_secnos, process_equations, delete_secnos, detach_attrs_math], blocks) # Second pass process_refs = process_refs_factory(references.keys()) replace_refs = replace_refs_factory(references, use_cleveref_default, use_eqref, plusname if not capitalize else [name.title() for name in plusname], starname, 'equation') altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [repair_refs, process_refs, replace_refs], altered) # Update the doc if PANDOCVERSION >= '1.18': doc['blocks'] = altered else: doc = doc[:1] + altered # Dump the results json.dump(doc, STDOUT) # Flush stdout STDOUT.flush()
def main(): """Main program""" # Read the command-line arguments parser = argparse.ArgumentParser(description='Pandoc latex extensions.') version = '%(prog)s {version}'.format(version=__version__) parser.add_argument('--version', action='version', version=version) parser.add_argument('fmt') args = parser.parse_args() # Get the output format and document fmt = args.fmt doc = json.loads(STDIN.read()) # This filter only operates on latex documents if fmt != 'latex': json.dump(doc, STDOUT) STDOUT.flush() # Chop up the doc meta = doc['meta'] blocks = doc['blocks'] # Get the warning level warninglevel = 2 # 0 - no warnings; 1 - some warnings; 2 - all warnings for name in [ 'pandoc-latex-extensions-warning-level', 'xnos-warning-level' ]: if name in meta: warninglevel = int(get_meta(meta, name)) break # Set the warninglevel in each plugin for plugin in PLUGINS: plugin.warninglevel = warninglevel # Apply the actions altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), ACTIONS, blocks) # Apply the processors if warninglevel == 2: msg = textwrap.dedent("""\ pandoc-latex-extensions: Wrote the following blocks to header-includes. If you use pandoc's --include-in-header option then you will need to manually include these yourself. """) STDERR.write('\n') STDERR.write(textwrap.fill(msg)) STDERR.write('\n') for processor in PROCESSORS: processor(meta, altered) # Finish up doc['blocks'] = altered json.dump(doc, STDOUT) STDOUT.flush()
def main(): """Filters the document AST.""" # Get the output format, document and metadata fmt = args.fmt doc = json.loads(STDIN.read()) meta = doc[0]['unMeta'] # Process the metadata variables process(meta) # First pass altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [attach_attrs_image, process_figures, detach_attrs_image], doc) # Second pass process_refs = process_refs_factory(references.keys()) replace_refs = replace_refs_factory(references, cleveref_default, plusname, starname, 'figure') altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [repair_refs, process_refs, replace_refs], altered) # Insert supporting TeX if fmt == 'latex': rawblocks = [] if has_unnumbered_figures: rawblocks += [RawBlock('tex', TEX0), RawBlock('tex', TEX1), RawBlock('tex', TEX2)] if captionname != 'Figure': rawblocks += [RawBlock('tex', TEX3 % captionname)] insert_rawblocks = insert_rawblocks_factory(rawblocks) altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [insert_rawblocks], altered) # Dump the results json.dump(altered, STDOUT) # Flush stdout STDOUT.flush()
def main(): """Filters the document AST.""" # pylint: disable=global-statement global PANDOCVERSION global AttrMath # Get the output format and document fmt = args.fmt doc = json.loads(STDIN.read()) # Initialize pandocxnos # pylint: disable=too-many-function-args PANDOCVERSION = pandocxnos.init(args.pandocversion, doc) # Element primitives AttrMath = elt('Math', 2) # Chop up the doc meta = doc['meta'] if PANDOCVERSION >= '1.18' else doc[0]['unMeta'] blocks = doc['blocks'] if PANDOCVERSION >= '1.18' else doc[1:] # First pass attach_attrs_math = attach_attrs_factory(Math, allow_space=True) detach_attrs_math = detach_attrs_factory(Math) insert_secnos = insert_secnos_factory(Math) delete_secnos = delete_secnos_factory(Math) altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [attach_attrs_math, insert_secnos, process_tables, delete_secnos, detach_attrs_math], blocks) # Second pass altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [replace_table_references], altered) # Update the doc if PANDOCVERSION >= '1.18': doc['blocks'] = altered else: doc = doc[:1] + altered # Dump the results json.dump(doc, STDOUT) # Flush stdout STDOUT.flush()
def main(): """Main program.""" stdin = STDIN for name in FILTERS: try: stdout = io.TextIOWrapper(io.BytesIO(), STDOUT.encoding) m = __import__(name) if m.__version__ < '2.0.0': msg = '%s must have version number 2.0.0 or higher to be'\ 'called by the pandoc-xnos filter.' % name raise RuntimeError(msg) m.main(stdin, stdout) stdin = stdout stdin.seek(0) except ImportError: pass STDOUT.write(stdin.read()) STDOUT.flush()
def main(): """Filters the document AST.""" # Get the output format, document and metadata fmt = args.fmt doc = json.loads(STDIN.read()) meta = doc[0]['unMeta'] # Process the metadata variables process(meta) # First pass altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [attach_attrs_table, process_tables, detach_attrs_table], doc) # Second pass process_refs = process_refs_factory(references.keys()) replace_refs = replace_refs_factory(references, cleveref_default, plusname, starname, 'table') altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [repair_refs, process_refs, replace_refs], altered) # Assemble supporting TeX if fmt == 'latex': tex = ['% Tablenos directives'] # Change caption name if captionname != 'Table': tex.append(r'\renewcommand{\tablename}{%s}'%captionname) if len(tex) > 1: altered[1] = [RawBlock('tex', '\n'.join(tex))] + altered[1] # Dump the results json.dump(altered, STDOUT) # Flush stdout STDOUT.flush()
def main(): """Filters the document AST.""" # pylint: disable=global-statement global PANDOCVERSION global AttrTable # Get the output format and document fmt = args.fmt doc = json.loads(STDIN.read()) # Initialize pandocxnos # pylint: disable=too-many-function-args PANDOCVERSION = pandocxnos.init(args.pandocversion, doc) # Element primitives AttrTable = elt('Table', 6) # Chop up the doc meta = doc['meta'] if PANDOCVERSION >= '1.18' else doc[0]['unMeta'] blocks = doc['blocks'] if PANDOCVERSION >= '1.18' else doc[1:] # Process the metadata variables process(meta) # First pass detach_attrs_table = detach_attrs_factory(Table) insert_secnos = insert_secnos_factory(Table) delete_secnos = delete_secnos_factory(Table) altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [attach_attrs_table, insert_secnos, process_tables, delete_secnos, detach_attrs_table], blocks) # Second pass process_refs = process_refs_factory(references.keys()) replace_refs = replace_refs_factory(references, use_cleveref_default, False, plusname if not capitalize else [name.title() for name in plusname], starname, 'table') altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [repair_refs, process_refs, replace_refs], altered) # Insert supporting TeX if fmt in ['latex']: rawblocks = [] if has_unnumbered_tables: rawblocks += [RawBlock('tex', TEX0), RawBlock('tex', TEX1), RawBlock('tex', TEX2)] if captionname != 'Table': rawblocks += [RawBlock('tex', TEX3 % captionname)] insert_rawblocks = insert_rawblocks_factory(rawblocks) altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [insert_rawblocks], altered) # Update the doc if PANDOCVERSION >= '1.18': doc['blocks'] = altered else: doc = doc[:1] + altered # Dump the results json.dump(doc, STDOUT) # Flush stdout STDOUT.flush()
def main(): """Filters the document AST.""" # pylint: disable=global-statement global PANDOCVERSION global Image # Get the output format and document fmt = args.fmt doc = json.loads(STDIN.read()) # Initialize pandocxnos # pylint: disable=too-many-function-args PANDOCVERSION = pandocxnos.init(args.pandocversion, doc) # Element primitives if PANDOCVERSION < '1.16': Image = elt('Image', 2) # Chop up the doc meta = doc['meta'] if PANDOCVERSION >= '1.18' else doc[0]['unMeta'] blocks = doc['blocks'] if PANDOCVERSION >= '1.18' else doc[1:] # Process the metadata variables process(meta) # First pass attach_attrs_image = attach_attrs_factory(Image, extract_attrs=_extract_attrs) detach_attrs_image = detach_attrs_factory(Image) insert_secnos = insert_secnos_factory(Image) delete_secnos = delete_secnos_factory(Image) filters = [insert_secnos, process_figures, delete_secnos] \ if PANDOCVERSION >= '1.16' else \ [attach_attrs_image, insert_secnos, process_figures, delete_secnos, detach_attrs_image] altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), filters, blocks) # Second pass process_refs = process_refs_factory(references.keys()) replace_refs = replace_refs_factory(references, cleveref_default, plusname, starname, 'figure') altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [repair_refs, process_refs, replace_refs], altered) # Insert supporting TeX if fmt == 'latex': rawblocks = [] if has_unnumbered_figures: rawblocks += [ RawBlock('tex', TEX0), RawBlock('tex', TEX1), RawBlock('tex', TEX2) ] if captionname != 'Figure': rawblocks += [RawBlock('tex', TEX3 % captionname)] insert_rawblocks = insert_rawblocks_factory(rawblocks) altered = functools.reduce( lambda x, action: walk(x, action, fmt, meta), [insert_rawblocks], altered) # Update the doc if PANDOCVERSION >= '1.18': doc['blocks'] = altered else: doc = doc[:1] + altered # Dump the results json.dump(doc, STDOUT) # Flush stdout STDOUT.flush()
def main(): """Filters the document AST.""" # pylint: disable=global-statement global PANDOCVERSION global AttrTable # Get the output format and document fmt = args.fmt doc = json.loads(STDIN.read()) # Initialize pandocxnos # pylint: disable=too-many-function-args PANDOCVERSION = pandocxnos.init(args.pandocversion, doc) # Element primitives AttrTable = elt('Table', 6) # Chop up the doc meta = doc['meta'] if PANDOCVERSION >= '1.18' else doc[0]['unMeta'] blocks = doc['blocks'] if PANDOCVERSION >= '1.18' else doc[1:] # Process the metadata variables process(meta) # First pass detach_attrs_table = detach_attrs_factory(Table) insert_secnos = insert_secnos_factory(Table) delete_secnos = delete_secnos_factory(Table) altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [ attach_attrs_table, insert_secnos, process_tables, delete_secnos, detach_attrs_table ], blocks) # Second pass process_refs = process_refs_factory(references.keys()) replace_refs = replace_refs_factory( references, use_cleveref_default, False, plusname if not capitalize else [name.title() for name in plusname], starname, 'table') altered = functools.reduce(lambda x, action: walk(x, action, fmt, meta), [repair_refs, process_refs, replace_refs], altered) # Insert supporting TeX if fmt in ['latex']: rawblocks = [] if has_unnumbered_tables: rawblocks += [ RawBlock('tex', TEX0), RawBlock('tex', TEX1), RawBlock('tex', TEX2) ] if captionname != 'Table': rawblocks += [RawBlock('tex', TEX3 % captionname)] insert_rawblocks = insert_rawblocks_factory(rawblocks) altered = functools.reduce( lambda x, action: walk(x, action, fmt, meta), [insert_rawblocks], altered) # Update the doc if PANDOCVERSION >= '1.18': doc['blocks'] = altered else: doc = doc[:1] + altered # Dump the results json.dump(doc, STDOUT) # Flush stdout STDOUT.flush()