def render(self): data = [] column_names = ('Name', 'Type', 'Default', 'Doc Text') for field in field_iter(self.resource): data.append([ field.name, field.__class__.__name__, '' if field is not NOT_PROVIDED else str(field.default), field.doc_text ]) self.print(tables.format_pretty_table(data, column_names))
def document_members(self, all_members=False): data_table = [ self.build_field_triple(f) for f in field_iter(self.object, self.options.include_virtual) ] # Calculate table column widths name_len = 4 data_type_len = 9 details_len = 7 for name, data_type, details in data_table: name_len = max(len(name), name_len) data_type_len = max(len(data_type), data_type_len) details_len = max(max(len(l) for l in details), details_len) name_len += 2 # Padding data_type_len += 2 # Padding details_len += 2 # Padding def add_separator(char='-'): self.add_line( "+%s+%s+%s+" % (char * name_len, char * data_type_len, char * details_len), '<odin_sphinx>') def add_row_line(name, data_type, details): self.add_line( "| %s%s | %s%s | %s%s |" % ( name, ' ' * (name_len - len(name) - 2), data_type, ' ' * (data_type_len - len(data_type) - 2), details, ' ' * (details_len - len(details) - 2), ), '<odin_sphinx>') def add_row(name, data_type, details): add_row_line(name, data_type, details.pop(0)) for line in details: add_row_line('', '', line) # Generate table add_separator() add_row("Name", "Data type", ["Details"]) add_separator('=') for row in data_table: add_row(*row) add_separator()
def document_members(self, all_members=False): data_table = [ self.build_field_triple(f) for f in field_iter(self.object, self.options.include_virtual) ] # Calculate table column widths name_len = 4 data_type_len = 9 details_len = 7 for name, data_type, details in data_table: name_len = max(len(name), name_len) data_type_len = max(len(data_type), data_type_len) details_len = max(max(len(l) for l in details), details_len) name_len += 2 # Padding data_type_len += 2 # Padding details_len += 2 # Padding def add_separator(char='-'): self.add_line("+%s+%s+%s+" % ( char * name_len, char * data_type_len, char * details_len ), '<odin_sphinx>') def add_row_line(name, data_type, details): self.add_line("| %s%s | %s%s | %s%s |" % ( name, ' ' * (name_len - len(name) - 2), data_type, ' ' * (data_type_len - len(data_type) - 2), details, ' ' * (details_len - len(details) - 2), ), '<odin_sphinx>') def add_row(name, data_type, details): add_row_line(name, data_type, details.pop(0)) for line in details: add_row_line('', '', line) # Generate table add_separator() add_row("Name", "Data type", ["Details"]) add_separator('=') for row in data_table: add_row(*row) add_separator()
def generate(): yield '\t'.join(f.name for f in field_iter(User)) + '\n' for user in USERS: yield '\t'.join(str(v) for _, v in field_iter_items(user)) + '\n'