Skip to content
This repository was archived by the owner on Dec 21, 2023. It is now read-only.

Commit c2d47c0

Browse files
author
PokestarFan
committed
Add alternate methods of making a table (csv, table code)
1 parent d97c725 commit c2d47c0

File tree

2 files changed

+113
-1
lines changed

2 files changed

+113
-1
lines changed

Diff for: markdowntable/__init__.py

+58-1
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,21 @@ def all_columns(self, *args):
9696
except Exception as e:
9797
raise SuppressedError(type(e).__name__, str(e), self.debug(print_d=False))
9898

99+
def all_columns_with_list(self, list):
100+
"""
101+
102+
:param list: list
103+
:return: None
104+
"""
105+
try:
106+
all_col_data = {'function': 'all_columns', 'data': []}
107+
for value in list:
108+
all_col_data['data'].append(self.add_column(str(value), all_cols=True))
109+
self.functions.append(all_col_data)
110+
except Exception as e:
111+
raise SuppressedError(type(e).__name__, str(e), self.debug(print_d=False))
112+
113+
99114
def finalize_cols(self):
100115
"""
101116
@@ -110,7 +125,7 @@ def finalize_cols(self):
110125
except Exception as e:
111126
raise SuppressedError(type(e).__name__, str(e), self.debug(print_d=False))
112127

113-
def add_row(self, show_warning_message=True, *args):
128+
def add_row(self, *args, show_warning_message=True):
114129
"""
115130
116131
:param show_warning_message: bool
@@ -152,6 +167,48 @@ def add_row(self, show_warning_message=True, *args):
152167
except Exception as e:
153168
raise SuppressedError(type(e).__name__, str(e), self.debug(print_d=False))
154169

170+
def add_row_with_list(self, list, show_warning_message=True):
171+
"""
172+
173+
:param show_warning_message: bool
174+
:param list: list
175+
:return: None
176+
"""
177+
try:
178+
if self.finalized_run:
179+
self.finalized_run = False
180+
if not self.finalized:
181+
self.finalize_cols()
182+
self.finalized_run = True
183+
self.finalized = True
184+
add_row_data = {'function': 'add_row',
185+
'data': {'finalized_run': self.finalized_run,
186+
'show_warning_message': show_warning_message,
187+
'values': []}}
188+
self.rows += 1
189+
row = '|'
190+
rows_made = 0
191+
for i in range(int(len(list))):
192+
row += '{}|'.format(str(list[i]))
193+
rows_made += 1
194+
add_row_data['data']['values'].append(list[i])
195+
if self.columns > rows_made:
196+
if show_warning_message:
197+
print(not_enough_values(rows_made, self.columns))
198+
add_row_data['data']['message_shown'] = True
199+
for i in range(int(self.columns - rows_made)):
200+
row += ' |'
201+
# noinspection PyTypeChecker
202+
add_row_data['data']['values'].append('{} blank values added'.format(str(self.columns - rows_made)))
203+
elif self.columns < rows_made:
204+
raise TooManyValues(self.columns)
205+
self.table += '\n{}'.format(row)
206+
self.functions.append(add_row_data)
207+
except TooManyValues:
208+
raise
209+
except Exception as e:
210+
raise SuppressedError(type(e).__name__, str(e), self.debug(print_d=False))
211+
155212
def export_table_to_file(self, filename='markdowntable', extension='txt', mode='w+', overwrite_warning=True):
156213
"""
157214

Diff for: markdowntable/inputs.py

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
import csv
2+
3+
from .__init__ import Table
4+
5+
6+
def import_from_csv(filename, extension='csv'):
7+
"""
8+
9+
:param filename: string
10+
:param extension: string
11+
:return: markdown.Table object
12+
"""
13+
global header_row, csv_table
14+
with open(filename + '.' + extension, 'r', newline='') as file:
15+
filereader = csv.reader(file)
16+
row_num = 0
17+
for row in filereader:
18+
if row_num == 0:
19+
header_row = True
20+
if header_row:
21+
first_entry = row[0]
22+
row.remove(first_entry)
23+
csv_table = Table(first_entry)
24+
for entry in row:
25+
csv_table.add_column(entry)
26+
else:
27+
csv_table.add_row_with_list(row)
28+
row_num += 0
29+
return csv_table
30+
31+
32+
def import_from_code(code):
33+
"""
34+
35+
:param code: string
36+
:return: markdown.Table object
37+
"""
38+
global codetable
39+
lines = code.split('\n')
40+
altlines = []
41+
for line in lines:
42+
if '|---|' not in line:
43+
altlines.append(line)
44+
lines = altlines
45+
line_no = 0
46+
for line in lines:
47+
entries = line.split('|')
48+
if line_no == 0:
49+
codetable = Table(entries[0])
50+
entries.remove(entries[0])
51+
codetable.all_columns_with_list(entries)
52+
else:
53+
codetable.add_row_with_list(entries)
54+
line_no += 1
55+
return codetable

0 commit comments

Comments
 (0)