Skip to content
This repository has been archived by the owner on Jan 31, 2022. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
orginize import
  • Loading branch information
vkocubinsky committed Jul 6, 2013
1 parent 3d8c525 commit 170d293
Show file tree
Hide file tree
Showing 12 changed files with 180 additions and 205 deletions.
32 changes: 26 additions & 6 deletions table_base.py
Expand Up @@ -27,11 +27,12 @@

import math
import re
import csv

try:
from .table_line_parser import LineParser
from . import table_line_parser as tparser
except ValueError:
from table_line_parser import LineParser
import table_line_parser as tparser


class TableConfiguration:
Expand Down Expand Up @@ -61,10 +62,10 @@ def __init__(self, name, table_configuration):
self.keep_space_left = self.table_configuration.keep_space_left
self.intelligent_formatting = self.table_configuration.intelligent_formatting

self.line_parser = LineParser("(?:(?:\+)|(?:\|))")
self.line_parser = tparser.LineParser("(?:(?:\+)|(?:\|))")
# Should be set in sublass constructor
self.table_parser = None
self.table_driver = TableDriver()
self.table_driver = TableDriver(self)


class Column(object):
Expand Down Expand Up @@ -477,8 +478,8 @@ def __eq__(self, other):

class TableDriver:

def __init__(self):
pass
def __init__(self, syntax):
self.syntax = syntax

def visual_column_count(self, table, row_ind):
return sum([1 for column in table[row_ind].columns
Expand Down Expand Up @@ -722,6 +723,25 @@ def editor_previous_field(self, table, table_pos):
break
return ("Cursor position changed", pos)

def parse_csv(self, text):
try:
table = TextTable(self.syntax)
dialect = csv.Sniffer().sniff(text)
table_reader = csv.reader(text.splitlines(), dialect)
for cols in table_reader:
row = DataRow(table)
for col in cols:
row.columns.append(DataColumn(row, col))
table.rows.append(row)
except csv.Error:
table = TextTable(self.syntax)
for line in text.splitlines():
row = Row(table, Row.ROW_DATA)
row.columns.append(DataColumn(row, line))
table.rows.append(row)
table.pack()
return table


class BaseTableParser:

Expand Down
24 changes: 12 additions & 12 deletions table_border_syntax.py
Expand Up @@ -29,15 +29,15 @@
import re

try:
from .table_base import *
from . import table_base as tbase
except ValueError:
from table_base import *
import table_base as tbase


class SeparatorRow(Row):
class SeparatorRow(tbase.Row):

def __init__(self, table, separator='-', size=0):
Row.__init__(self, table)
tbase.Row.__init__(self, table)
self.separator = separator
for i in range(size):
self.columns.append(SeparatorColumn(self, self.separator))
Expand All @@ -64,9 +64,9 @@ def render(self):
return r


class SeparatorColumn(Column):
class SeparatorColumn(tbase.Column):
def __init__(self, row, separator):
Column.__init__(self, row)
tbase.Column.__init__(self, row)
self.separator = separator

def min_len(self):
Expand All @@ -77,19 +77,19 @@ def render(self):
return self.separator * self.col_len


class BorderTableDriver(TableDriver):
class BorderTableDriver(tbase.TableDriver):

def editor_insert_single_hline(self, table, table_pos):
table.rows.insert(table_pos.row_num + 1, SeparatorRow(table, '-'))
table.pack()
return ("Single separator row inserted",
TablePos(table_pos.row_num, table_pos.field_num))
tbase.TablePos(table_pos.row_num, table_pos.field_num))

def editor_insert_double_hline(self, table, table_pos):
table.rows.insert(table_pos.row_num + 1, SeparatorRow(table, '='))
table.pack()
return ("Double separator row inserted",
TablePos(table_pos.row_num, table_pos.field_num))
tbase.TablePos(table_pos.row_num, table_pos.field_num))

def editor_insert_hline_and_move(self, table, table_pos):
table.rows.insert(table_pos.row_num + 1, SeparatorRow(table, '-'))
Expand All @@ -100,10 +100,10 @@ def editor_insert_hline_and_move(self, table, table_pos):
else:
table.insert_empty_row(table_pos.row_num + 2)
return("Single separator row inserted",
TablePos(table_pos.row_num + 2, 0))
tbase.TablePos(table_pos.row_num + 2, 0))


class BorderTableParser(BaseTableParser):
class BorderTableParser(tbase.BaseTableParser):

def _is_single_row_separator(self, str_cols):
if len(str_cols) == 0:
Expand Down Expand Up @@ -131,4 +131,4 @@ def create_row(self, table, line):
return row

def create_data_row(self, table, line):
return DataRow(table)
return tbase.DataRow(table)
16 changes: 8 additions & 8 deletions table_emacs_org_mode_syntax.py
Expand Up @@ -26,22 +26,22 @@
from __future__ import division

try:
from .table_base import *
from .table_border_syntax import *
from . import table_base as tbase
from . import table_border_syntax as tborder
except ValueError:
from table_base import *
from table_border_syntax import *
import table_base as tbase
import table_border_syntax as tborder


def create_syntax(table_configuration=None):
return EmacsOrgModeTableSyntax(table_configuration)


class EmacsOrgModeTableSyntax(TableSyntax):
class EmacsOrgModeTableSyntax(tbase.TableSyntax):

def __init__(self, table_configuration):
TableSyntax.__init__(self, "Emacs Org mode", table_configuration)
self.table_parser = BorderTableParser(self)
tbase.TableSyntax.__init__(self, "Emacs Org mode", table_configuration)
self.table_parser = tborder.BorderTableParser(self)
self.hline_out_border = '|'
self.hline_in_border = '+'
self.table_driver = BorderTableDriver()
self.table_driver = tborder.BorderTableDriver(self)
74 changes: 20 additions & 54 deletions table_lib.py
Expand Up @@ -27,21 +27,21 @@
import csv

try:
from .table_base import *
from . import table_simple_syntax
from . import table_emacs_org_mode_syntax
from . import table_pandoc_syntax
from . import table_multi_markdown_syntax
from . import table_re_structured_text_syntax
from . import table_textile_syntax
from . import table_base as tbase
from . import table_simple_syntax as simple
from . import table_emacs_org_mode_syntax as emacs
from . import table_pandoc_syntax as pandoc
from . import table_multi_markdown_syntax as markdown
from . import table_re_structured_text_syntax as restructred
from . import table_textile_syntax as textile
except ValueError:
from table_base import *
import table_simple_syntax
import table_emacs_org_mode_syntax
import table_pandoc_syntax
import table_multi_markdown_syntax
import table_re_structured_text_syntax
import table_textile_syntax
import table_base as tbase
import table_simple_syntax as simple
import table_emacs_org_mode_syntax as emacs
import table_pandoc_syntax as pandoc
import table_multi_markdown_syntax as markdown
import table_re_structured_text_syntax as re_structured_text
import table_textile_syntax as textile


def simple_syntax(table_configuration=None):
Expand Down Expand Up @@ -70,12 +70,12 @@ def textile_syntax(table_configuration=None):

def create_syntax(syntax_name, table_configuration=None):
modules = {
"Simple": table_simple_syntax,
"EmacsOrgMode": table_emacs_org_mode_syntax,
"Pandoc": table_pandoc_syntax,
"MultiMarkdown": table_multi_markdown_syntax,
"reStructuredText": table_re_structured_text_syntax,
"Textile": table_textile_syntax
"Simple": simple,
"EmacsOrgMode": emacs,
"Pandoc": pandoc,
"MultiMarkdown": markdown,
"reStructuredText": re_structured_text,
"Textile": textile
}

if syntax_name in modules:
Expand All @@ -86,37 +86,3 @@ def create_syntax(syntax_name, table_configuration=None):

syntax = module.create_syntax(table_configuration)
return syntax


def parse_csv(syntax, text):
try:
table = TextTable(syntax)
dialect = csv.Sniffer().sniff(text)
table_reader = csv.reader(text.splitlines(), dialect)
for cols in table_reader:
row = DataRow(table)
for col in cols:
row.columns.append(DataColumn(row, col))
table.rows.append(row)
except csv.Error:
table = TextTable(syntax)
for line in text.splitlines():
row = Row(table, Row.ROW_DATA)
row.columns.append(DataColumn(row, line))
table.rows.append(row)
table.pack()
return table


if __name__ == '__main__':
# each line begin from '|'

text = """\
| a | b | d
"""

syntax = create_syntax("MultiMarkdown")
syntax.intelligent_formatting = True
t = syntax.table_parser.parse_text(text.strip())
print("Table:'\n{0}\n'".format(t.render()))
#print("visual to internal for 1", t.internal_to_visual_index(1,2))

0 comments on commit 170d293

Please sign in to comment.