Example #1
0
 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))
Example #2
0
    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()
Example #3
0
    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()
Example #4
0
        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'