Python docutils.nodes.table() Examples
The following are 30
code examples of docutils.nodes.table().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
docutils.nodes
, or try the search function
.
Example #1
Source File: autosummary__init__.py From pyGSTi with Apache License 2.0 | 6 votes |
def autosummary_table_visit_html(self, node): """Make the first column of the table non-breaking.""" try: tbody = node[0][0][-1] for row in tbody: col1_entry = row[0] par = col1_entry[0] for j, subnode in enumerate(list(par)): if isinstance(subnode, nodes.Text): new_text = text_type(subnode.astext()) new_text = new_text.replace(u" ", u"\u00a0") par[j] = nodes.Text(new_text) except IndexError: pass # -- autodoc integration -------------------------------------------------------
Example #2
Source File: sphinx_cfg_options.py From tenpy with GNU General Public License v3.0 | 6 votes |
def process(self, doctree): for node in doctree.traverse(cfgconfig): config = node.config context = node.context options = self.domain.config_options[config] if self.builder.config.cfg_options_summary is None: new_content = [] elif len(options) == 0: new_content = [nodes.Text("[No options defined for this config]")] elif self.builder.config.cfg_options_summary == "table": new_content = self.create_summary_table(config, context, options) elif self.builder.config.cfg_options_summary == "list": new_content = [self.create_option_reference(o, config, context) for o in options] if len(new_content) > 1: listnode = nodes.bullet_list() for entry in new_content: listnode += nodes.list_item('', entry) new_content = [listnode] else: raise ValueError("unknown value for config option `cfg_options_summary`.") node.replace_self(new_content)
Example #3
Source File: __init__.py From deepWordBug with Apache License 2.0 | 6 votes |
def visit_table(self, node): self.requirements['table'] = PreambleCmds.table if self.active_table.is_open(): self.table_stack.append(self.active_table) # nesting longtable does not work (e.g. 2007-04-18) self.active_table = Table(self,'tabular') # A longtable moves before \paragraph and \subparagraph # section titles if it immediately follows them: if (self.active_table._latex_type == 'longtable' and isinstance(node.parent, nodes.section) and node.parent.index(node) == 1 and self.d_class.section(self.section_level).find('paragraph') != -1): self.out.append('\\leavevmode') self.active_table.open() self.active_table.set_table_style(self.settings.table_style, node['classes']) if 'align' in node: self.active_table.set('align', node['align']) if self.active_table.borders == 'booktabs': self.requirements['booktabs'] = r'\usepackage{booktabs}' self.push_output_collector([])
Example #4
Source File: __init__.py From deepWordBug with Apache License 2.0 | 6 votes |
def visit_paragraph(self, node): # insert blank line, unless # * the paragraph is first in a list item or compound, # * follows a non-paragraph node in a compound, # * is in a table with auto-width columns index = node.parent.index(node) if index == 0 and isinstance(node.parent, (nodes.list_item, nodes.description, nodes.compound)): pass elif (index > 0 and isinstance(node.parent, nodes.compound) and not isinstance(node.parent[index - 1], nodes.paragraph) and not isinstance(node.parent[index - 1], nodes.compound)): pass elif self.active_table.colwidths_auto: if index == 1: # second paragraph self.warn('LaTeX merges paragraphs in tables ' 'with auto-sized columns!', base_node=node) if index > 0: self.out.append('\n') else: self.out.append('\n') if node.get('ids'): self.out += self.ids_to_labels(node) + ['\n'] if node['classes']: self.visit_inline(node)
Example #5
Source File: schematable.py From altair with BSD 3-Clause "New" or "Revised" License | 6 votes |
def prepare_table_header(titles, widths): """Build docutil empty table """ ncols = len(titles) assert len(widths) == ncols tgroup = nodes.tgroup(cols=ncols) for width in widths: tgroup += nodes.colspec(colwidth=width) header = nodes.row() for title in titles: header += nodes.entry("", nodes.paragraph(text=title)) tgroup += nodes.thead("", header) tbody = nodes.tbody() tgroup += tbody return nodes.table("", tgroup), tbody
Example #6
Source File: speciescatalog.py From stdpopsim with GNU General Public License v3.0 | 6 votes |
def models_table(self, species): table = nodes.table() tgroup = nodes.tgroup(cols=2) for _ in range(2): colspec = nodes.colspec(colwidth=1) tgroup.append(colspec) table += tgroup thead = nodes.thead() tgroup += thead row = nodes.row() entry = nodes.entry() entry += nodes.paragraph(text="ID") row += entry entry = nodes.entry() entry += nodes.paragraph(text="Description") row += entry thead.append(row) rows = [] for model in species.demographic_models: row = nodes.row() rows.append(row) mid = self.get_demographic_model_id(species, model) entry = nodes.entry() para = nodes.paragraph() entry += para para += nodes.reference(internal=True, refid=mid, text=model.id) row += entry entry = nodes.entry() entry += nodes.paragraph(text=model.description) row += entry tbody = nodes.tbody() tbody.extend(rows) tgroup += tbody return table
Example #7
Source File: sphinx_cfg_options.py From tenpy with GNU General Public License v3.0 | 6 votes |
def setup(app): app.add_event('cfg_options-parse_config') app.add_config_value('cfg_options_recursive_includes', True, 'html') app.add_config_value('cfg_options_parse_numpydoc_style_options', True, 'html') app.add_config_value('cfg_options_parse_comma_sep_names', False, 'html') app.add_config_value('cfg_options_summary', "table", 'html') app.add_config_value('cfg_options_table_add_header', True, 'html') app.add_config_value('cfg_options_default_in_summary_table', True, 'html') app.add_config_value('cfg_options_unique', True, 'html') app.add_config_value('cfg_options_always_include', [], 'html') app.add_domain(CfgDomain) app.add_node(cfgconfig) app.connect('doctree-resolved', ConfigNodeProcessor) StandardDomain.initial_data['labels']['cfg-config-index'] =\ ('cfg-config', '', 'Config Index') StandardDomain.initial_data['labels']['cfg-option-index'] =\ ('cfg-option', '', 'Config-Options Index') return {'version': '0.1'}
Example #8
Source File: tables.py From faces with GNU General Public License v2.0 | 6 votes |
def get_column_widths(self, max_cols): if type(self.widths) == list: if len(self.widths) != max_cols: error = self.state_machine.reporter.error( '"%s" widths do not match the number of columns in table ' '(%s).' % (self.name, max_cols), nodes.literal_block( self.block_text, self.block_text), line=self.lineno) raise SystemMessagePropagation(error) col_widths = self.widths elif max_cols: col_widths = [100 // max_cols] * max_cols else: error = self.state_machine.reporter.error( 'No table data detected in CSV file.', nodes.literal_block( self.block_text, self.block_text), line=self.lineno) raise SystemMessagePropagation(error) if self.widths == 'auto': widths = 'auto' elif self.widths: # "grid" or list of integers widths = 'given' else: widths = self.widths return widths, col_widths
Example #9
Source File: states.py From faces with GNU General Public License v2.0 | 6 votes |
def table(self, isolate_function, parser_class): """Parse a table.""" block, messages, blank_finish = isolate_function() if block: try: parser = parser_class() tabledata = parser.parse(block) tableline = (self.state_machine.abs_line_number() - len(block) + 1) table = self.build_table(tabledata, tableline) nodelist = [table] + messages except tableparser.TableMarkupError as err: nodelist = self.malformed_table(block, ' '.join(err.args), offset=err.offset) + messages else: nodelist = messages return nodelist, blank_finish
Example #10
Source File: states.py From deepWordBug with Apache License 2.0 | 6 votes |
def build_table(self, tabledata, tableline, stub_columns=0, widths=None): colwidths, headrows, bodyrows = tabledata table = nodes.table() if widths == 'auto': table['classes'] += ['colwidths-auto'] elif widths: # "grid" or list of integers table['classes'] += ['colwidths-given'] tgroup = nodes.tgroup(cols=len(colwidths)) table += tgroup for colwidth in colwidths: colspec = nodes.colspec(colwidth=colwidth) if stub_columns: colspec.attributes['stub'] = 1 stub_columns -= 1 tgroup += colspec if headrows: thead = nodes.thead() tgroup += thead for row in headrows: thead += self.build_table_row(row, tableline) tbody = nodes.tbody() tgroup += tbody for row in bodyrows: tbody += self.build_table_row(row, tableline) return table
Example #11
Source File: states.py From faces with GNU General Public License v2.0 | 6 votes |
def build_table(self, tabledata, tableline, stub_columns=0, widths=None): colwidths, headrows, bodyrows = tabledata table = nodes.table() if widths: table['classes'] += ['colwidths-%s' % widths] tgroup = nodes.tgroup(cols=len(colwidths)) table += tgroup for colwidth in colwidths: colspec = nodes.colspec(colwidth=colwidth) if stub_columns: colspec.attributes['stub'] = 1 stub_columns -= 1 tgroup += colspec if headrows: thead = nodes.thead() tgroup += thead for row in headrows: thead += self.build_table_row(row, tableline) tbody = nodes.tbody() tgroup += tbody for row in bodyrows: tbody += self.build_table_row(row, tableline) return table
Example #12
Source File: states.py From deepWordBug with Apache License 2.0 | 6 votes |
def table(self, isolate_function, parser_class): """Parse a table.""" block, messages, blank_finish = isolate_function() if block: try: parser = parser_class() tabledata = parser.parse(block) tableline = (self.state_machine.abs_line_number() - len(block) + 1) table = self.build_table(tabledata, tableline) nodelist = [table] + messages except tableparser.TableMarkupError as err: nodelist = self.malformed_table(block, ' '.join(err.args), offset=err.offset) + messages else: nodelist = messages return nodelist, blank_finish
Example #13
Source File: tables.py From deepWordBug with Apache License 2.0 | 6 votes |
def get_column_widths(self, max_cols): if type(self.widths) == list: if len(self.widths) != max_cols: error = self.state_machine.reporter.error( '"%s" widths do not match the number of columns in table ' '(%s).' % (self.name, max_cols), nodes.literal_block( self.block_text, self.block_text), line=self.lineno) raise SystemMessagePropagation(error) col_widths = self.widths elif max_cols: col_widths = [100 // max_cols] * max_cols else: error = self.state_machine.reporter.error( 'No table data detected in CSV file.', nodes.literal_block( self.block_text, self.block_text), line=self.lineno) raise SystemMessagePropagation(error) return col_widths
Example #14
Source File: __init__.py From faces with GNU General Public License v2.0 | 6 votes |
def visit_paragraph(self, node): # insert blank line, unless # * the paragraph is first in a list item, # * follows a non-paragraph node in a compound, # * is in a table with auto-width columns index = node.parent.index(node) if (index == 0 and (isinstance(node.parent, nodes.list_item) or isinstance(node.parent, nodes.description))): pass elif (index > 0 and isinstance(node.parent, nodes.compound) and not isinstance(node.parent[index - 1], nodes.paragraph) and not isinstance(node.parent[index - 1], nodes.compound)): pass elif self.active_table.colwidths_auto: if index == 1: # second paragraph self.warn('LaTeX merges paragraphs in tables ' 'with auto-sized columns!', base_node=node) if index > 0: self.out.append('\n') else: self.out.append('\n') if node.get('ids'): self.out += self.ids_to_labels(node) + ['\n'] if node['classes']: self.visit_inline(node)
Example #15
Source File: __init__.py From faces with GNU General Public License v2.0 | 6 votes |
def visit_table(self, node): self.requirements['table'] = PreambleCmds.table if self.active_table.is_open(): self.table_stack.append(self.active_table) # nesting longtable does not work (e.g. 2007-04-18) self.active_table = Table(self,'tabular') # A longtable moves before \paragraph and \subparagraph # section titles if it immediately follows them: if (self.active_table._latex_type == 'longtable' and isinstance(node.parent, nodes.section) and node.parent.index(node) == 1 and self.d_class.section(self.section_level).find('paragraph') != -1): self.out.append('\\leavevmode') self.active_table.open() self.active_table.set_table_style(self.settings.table_style, node['classes']) if 'align' in node: self.active_table.set('align', node['align']) if self.active_table.borders == 'booktabs': self.requirements['booktabs'] = r'\usepackage{booktabs}' self.push_output_collector([])
Example #16
Source File: states.py From faces with GNU General Public License v2.0 | 6 votes |
def build_table(self, tabledata, tableline, stub_columns=0, widths=None): colwidths, headrows, bodyrows = tabledata table = nodes.table() if widths: table['classes'] += ['colwidths-%s' % widths] tgroup = nodes.tgroup(cols=len(colwidths)) table += tgroup for colwidth in colwidths: colspec = nodes.colspec(colwidth=colwidth) if stub_columns: colspec.attributes['stub'] = 1 stub_columns -= 1 tgroup += colspec if headrows: thead = nodes.thead() tgroup += thead for row in headrows: thead += self.build_table_row(row, tableline) tbody = nodes.tbody() tgroup += tbody for row in bodyrows: tbody += self.build_table_row(row, tableline) return table
Example #17
Source File: tables.py From faces with GNU General Public License v2.0 | 6 votes |
def get_column_widths(self, max_cols): if type(self.widths) == list: if len(self.widths) != max_cols: error = self.state_machine.reporter.error( '"%s" widths do not match the number of columns in table ' '(%s).' % (self.name, max_cols), nodes.literal_block( self.block_text, self.block_text), line=self.lineno) raise SystemMessagePropagation(error) col_widths = self.widths elif max_cols: col_widths = [100 // max_cols] * max_cols else: error = self.state_machine.reporter.error( 'No table data detected in CSV file.', nodes.literal_block( self.block_text, self.block_text), line=self.lineno) raise SystemMessagePropagation(error) if self.widths == 'auto': widths = 'auto' elif self.widths: # "grid" or list of integers widths = 'given' else: widths = self.widths return widths, col_widths
Example #18
Source File: _html_base.py From deepWordBug with Apache License 2.0 | 5 votes |
def depart_footer(self, node): start = self.context.pop() footer = [self.starttag(node, 'div', CLASS='footer'), '<hr class="footer" />\n'] footer.extend(self.body[start:]) footer.append('\n</div>\n') self.footer.extend(footer) self.body_suffix[:0] = footer del self.body[start:] # footnotes # --------- # use definition list instead of table for footnote text # TODO: use the new HTML5 element <aside>? (Also for footnote text)
Example #19
Source File: __init__.py From deepWordBug with Apache License 2.0 | 5 votes |
def depart_table(self, node): # wrap content in the right environment: content = self.out self.pop_output_collector() self.out.append('\n' + self.active_table.get_opening()) self.out += content self.out.append(self.active_table.get_closing() + '\n') self.active_table.close() if len(self.table_stack)>0: self.active_table = self.table_stack.pop() # Insert hyperlabel after (long)table, as # other places (beginning, caption) result in LaTeX errors. if node.get('ids'): self.out += self.ids_to_labels(node, set_anchor=False) + ['\n']
Example #20
Source File: tables.py From deepWordBug with Apache License 2.0 | 5 votes |
def check_table_dimensions(self, rows, header_rows, stub_columns): if len(rows) < header_rows: error = self.state_machine.reporter.error( '%s header row(s) specified but only %s row(s) of data ' 'supplied ("%s" directive).' % (header_rows, len(rows), self.name), nodes.literal_block( self.block_text, self.block_text), line=self.lineno) raise SystemMessagePropagation(error) if len(rows) == header_rows > 0: error = self.state_machine.reporter.error( 'Insufficient data supplied (%s row(s)); no data remaining ' 'for table body, required by "%s" directive.' % (len(rows), self.name), nodes.literal_block( self.block_text, self.block_text), line=self.lineno) raise SystemMessagePropagation(error) for row in rows: if len(row) < stub_columns: error = self.state_machine.reporter.error( '%s stub column(s) specified but only %s columns(s) of ' 'data supplied ("%s" directive).' % (stub_columns, len(row), self.name), nodes.literal_block( self.block_text, self.block_text), line=self.lineno) raise SystemMessagePropagation(error) if len(row) == stub_columns > 0: error = self.state_machine.reporter.error( 'Insufficient data supplied (%s columns(s)); no data remaining ' 'for table body, required by "%s" directive.' % (len(row), self.name), nodes.literal_block( self.block_text, self.block_text), line=self.lineno) raise SystemMessagePropagation(error)
Example #21
Source File: __init__.py From deepWordBug with Apache License 2.0 | 5 votes |
def minitoc(self, node, title, depth): """Generate a local table of contents with LaTeX package minitoc""" section_name = self.d_class.section(self.section_level) # name-prefix for current section level minitoc_names = {'part': 'part', 'chapter': 'mini'} if 'chapter' not in self.d_class.sections: minitoc_names['section'] = 'sect' try: minitoc_name = minitoc_names[section_name] except KeyError: # minitoc only supports part- and toplevel self.warn('Skipping local ToC at %s level.\n' % section_name + ' Feature not supported with option "use-latex-toc"', base_node=node) return # Requirements/Setup self.requirements['minitoc'] = PreambleCmds.minitoc self.requirements['minitoc-'+minitoc_name] = (r'\do%stoc' % minitoc_name) # depth: (Docutils defaults to unlimited depth) maxdepth = len(self.d_class.sections) self.requirements['minitoc-%s-depth' % minitoc_name] = ( r'\mtcsetdepth{%stoc}{%d}' % (minitoc_name, maxdepth)) # Process 'depth' argument (!Docutils stores a relative depth while # minitoc expects an absolute depth!): offset = {'sect': 1, 'mini': 0, 'part': 0} if 'chapter' in self.d_class.sections: offset['part'] = -1 if depth: self.out.append('\\setcounter{%stocdepth}{%d}' % (minitoc_name, depth + offset[minitoc_name])) # title: self.out.append('\\mtcsettitle{%stoc}{%s}\n' % (minitoc_name, title)) # the toc-generating command: self.out.append('\\%stoc\n' % minitoc_name)
Example #22
Source File: tables.py From deepWordBug with Apache License 2.0 | 5 votes |
def process_header_option(self): source = self.state_machine.get_source(self.lineno - 1) table_head = [] max_header_cols = 0 if 'header' in self.options: # separate table header in option rows, max_header_cols = self.parse_csv_data_into_rows( self.options['header'].split('\n'), self.HeaderDialect(), source) table_head.extend(rows) return table_head, max_header_cols
Example #23
Source File: states.py From faces with GNU General Public License v2.0 | 5 votes |
def underline(self, match, context, next_state): """Section title.""" lineno = self.state_machine.abs_line_number() title = context[0].rstrip() underline = match.string.rstrip() source = title + '\n' + underline messages = [] if column_width(title) > len(underline): if len(underline) < 4: if self.state_machine.match_titles: msg = self.reporter.info( 'Possible title underline, too short for the title.\n' "Treating it as ordinary text because it's so short.", line=lineno) self.parent += msg raise statemachine.TransitionCorrection('text') else: blocktext = context[0] + '\n' + self.state_machine.line msg = self.reporter.warning('Title underline too short.', nodes.literal_block(blocktext, blocktext), line=lineno) messages.append(msg) if not self.state_machine.match_titles: blocktext = context[0] + '\n' + self.state_machine.line # We need get_source_and_line() here to report correctly src, srcline = self.state_machine.get_source_and_line() # TODO: why is abs_line_number() == srcline+1 # if the error is in a table (try with test_tables.py)? # print "get_source_and_line", srcline # print "abs_line_number", self.state_machine.abs_line_number() msg = self.reporter.severe('Unexpected section title.', nodes.literal_block(blocktext, blocktext), source=src, line=srcline) self.parent += messages self.parent += msg return [], next_state, [] style = underline[0] context[:] = [] self.section(title, source, style, lineno - 1, messages) return [], next_state, []
Example #24
Source File: schematable.py From altair with BSD 3-Clause "New" or "Revised" License | 5 votes |
def build_schema_tabel(items): """Return schema table of items (iterator of prop, schema.item, requred)""" table, tbody = prepare_table_header( ["Property", "Type", "Description"], [10, 20, 50] ) for item in items: tbody += build_row(item) return table
Example #25
Source File: states.py From faces with GNU General Public License v2.0 | 5 votes |
def malformed_table(self, block, detail='', offset=0): block.replace(self.double_width_pad_char, '') data = '\n'.join(block) message = 'Malformed table.' startline = self.state_machine.abs_line_number() - len(block) + 1 if detail: message += '\n' + detail error = self.reporter.error(message, nodes.literal_block(data, data), line=startline+offset) return [error]
Example #26
Source File: states.py From faces with GNU General Public License v2.0 | 5 votes |
def table(self, isolate_function, parser_class): """Parse a table.""" block, messages, blank_finish = isolate_function() if block: try: parser = parser_class() tabledata = parser.parse(block) tableline = (self.state_machine.abs_line_number() - len(block) + 1) table = self.build_table(tabledata, tableline) nodelist = [table] + messages except tableparser.TableMarkupError, err: nodelist = self.malformed_table(block, ' '.join(err.args), offset=err.offset) + messages
Example #27
Source File: states.py From faces with GNU General Public License v2.0 | 5 votes |
def table_top(self, match, context, next_state, isolate_function, parser_class): """Top border of a generic table.""" nodelist, blank_finish = self.table(isolate_function, parser_class) self.parent += nodelist if not blank_finish: msg = self.reporter.warning( 'Blank line required after table.', line=self.state_machine.abs_line_number()+1) self.parent += msg return [], next_state, []
Example #28
Source File: schematable.py From altair with BSD 3-Clause "New" or "Revised" License | 5 votes |
def run(self): objectname = self.arguments[0] modname, classname = objectname.rsplit(".", 1) module = importlib.import_module(modname) cls = getattr(module, classname) schema = cls.resolve_references(cls._schema) # create the table from the object table = prepare_schema_tabel(schema) return [table]
Example #29
Source File: states.py From faces with GNU General Public License v2.0 | 5 votes |
def simple_table_top(self, match, context, next_state): """Top border of a simple table.""" return self.table_top(match, context, next_state, self.isolate_simple_table, tableparser.SimpleTableParser)
Example #30
Source File: states.py From deepWordBug with Apache License 2.0 | 5 votes |
def table_top(self, match, context, next_state, isolate_function, parser_class): """Top border of a generic table.""" nodelist, blank_finish = self.table(isolate_function, parser_class) self.parent += nodelist if not blank_finish: msg = self.reporter.warning( 'Blank line required after table.', line=self.state_machine.abs_line_number()+1) self.parent += msg return [], next_state, []