mirror of
https://github.com/kuhyx/WUT_Computer_Science.git
synced 2026-11-11 14:27:38 +01:00
feat: table insides and outsides
This commit is contained in:
parent
8deebc9312
commit
c25998f754
BIN
examples/verticalLines/vertical.pdf
Normal file
BIN
examples/verticalLines/vertical.pdf
Normal file
Binary file not shown.
8
examples/verticalLines/vertical.tex
Normal file
8
examples/verticalLines/vertical.tex
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
\documentclass{article}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\begin{tabular}{ l | c | r }
|
||||||
|
test & 2 & test \\
|
||||||
|
4 & 5 & 6 \\
|
||||||
|
\end{tabular}
|
||||||
|
\end{document}
|
||||||
@ -132,7 +132,7 @@ def tabular_required_parameters(latex_string):
|
|||||||
"l": "align='left'",
|
"l": "align='left'",
|
||||||
"c": "align='center'",
|
"c": "align='center'",
|
||||||
"r": "align='right'",
|
"r": "align='right'",
|
||||||
"|": "style=\"border-left: 1px solid black"
|
"|": "style='border-left: 1px solid black'"
|
||||||
}
|
}
|
||||||
if only_pipes_and_space(latex_string):
|
if only_pipes_and_space(latex_string):
|
||||||
print("tabular_required_parameters, required table parameters are only pipes and spaces!:", latex_string)
|
print("tabular_required_parameters, required table parameters are only pipes and spaces!:", latex_string)
|
||||||
@ -190,14 +190,81 @@ def tabular_columns_parameters(latex_string):
|
|||||||
return "Error!"
|
return "Error!"
|
||||||
print(length_value, conversed_unit, conversed_unit[0])
|
print(length_value, conversed_unit, conversed_unit[0])
|
||||||
final_length = round(float(length_value) * conversed_unit[0], 2)
|
final_length = round(float(length_value) * conversed_unit[0], 2)
|
||||||
return_string = "style=\"" + vertical_align_type + \
|
return_string = "style='" + vertical_align_type + \
|
||||||
" width: " + str(final_length) + conversed_unit[1] + ";\""
|
" width: " + str(final_length) + conversed_unit[1] + ";'"
|
||||||
return return_string
|
return return_string
|
||||||
|
|
||||||
|
|
||||||
def parameter_arguments(latex_string):
|
def split_rows(latex_string):
|
||||||
return latex_string
|
double_backslash = "\\"
|
||||||
|
rows = latex_string.split(double_backslash)
|
||||||
|
print(rows)
|
||||||
|
return rows
|
||||||
|
|
||||||
|
|
||||||
|
def split_columns(table_row, column_count):
|
||||||
|
columns = table_row.split("&")
|
||||||
|
if len(columns) != column_count and columns != ['']:
|
||||||
|
print(
|
||||||
|
f"split_columns, table_row: {table_row} has different amount of columns than expected: {column_count}")
|
||||||
|
return "Error!"
|
||||||
|
return columns
|
||||||
|
|
||||||
|
|
||||||
|
def translate_column(latex_column):
|
||||||
|
hline_string_literal = "\hline"
|
||||||
|
replaced_hline = latex_column.replace(hline_string_literal, "<hr>")
|
||||||
|
replaced_newline = replaced_hline.replace('\newline', "<br>")
|
||||||
|
print(latex_column, replaced_newline,
|
||||||
|
latex_column.find(hline_string_literal), hline_string_literal)
|
||||||
|
return replaced_newline
|
||||||
|
|
||||||
|
|
||||||
|
def translate_inside_to_html(latex_table_inside, column_style):
|
||||||
|
return_string = "<html> <table>"
|
||||||
|
column_amount = 0
|
||||||
|
line_string = "style='border-left: 1px solid black'"
|
||||||
|
for style in column_style:
|
||||||
|
print(style)
|
||||||
|
if style != line_string:
|
||||||
|
column_amount += 1
|
||||||
|
rows = split_rows(latex_table_inside)
|
||||||
|
for row in rows:
|
||||||
|
return_string += "<tr>"
|
||||||
|
|
||||||
|
columns = split_columns(row, column_amount)
|
||||||
|
column_number = 0
|
||||||
|
for column in columns:
|
||||||
|
return_string += "<td "
|
||||||
|
current_style = column_style[column_number]
|
||||||
|
while current_style == line_string:
|
||||||
|
return_string += line_string
|
||||||
|
column_number += 1
|
||||||
|
current_style = column_style[column_number]
|
||||||
|
|
||||||
|
return_string += column_style[column_number] + ">"
|
||||||
|
return_string += translate_column(column)
|
||||||
|
column_number += 1
|
||||||
|
return_string += "</td>"
|
||||||
|
|
||||||
|
return_string += "</tr>"
|
||||||
|
return_string += " </table> </html>"
|
||||||
|
print(return_string)
|
||||||
|
return return_string
|
||||||
|
|
||||||
|
|
||||||
|
def read_file(tex_filename: string):
|
||||||
|
tex_file = open(tex_filename, "r")
|
||||||
|
data = tex_file.read()
|
||||||
|
tex_file.close()
|
||||||
|
return data
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
tex_filename = "texfile.tex"
|
||||||
|
data = read_file(tex_filename)
|
||||||
|
document_class_index = data.find("\documentclass")
|
||||||
|
if document_class_index == -1:
|
||||||
|
print("Main function error! documentclass not found")
|
||||||
|
return "Error!"
|
||||||
document_class("")
|
document_class("")
|
||||||
|
|||||||
0
program/code/texfile.tex
Normal file
0
program/code/texfile.tex
Normal file
29
program/tests/test_code/test_split_columns.py
Normal file
29
program/tests/test_code/test_split_columns.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
from code.main import split_columns
|
||||||
|
|
||||||
|
|
||||||
|
def given_empty_then_correct():
|
||||||
|
assert split_columns("", 0) == ['']
|
||||||
|
|
||||||
|
|
||||||
|
def given_no_and_then_correct():
|
||||||
|
assert split_columns("estsegsegtswegseg", 1) == ['estsegsegtswegseg']
|
||||||
|
|
||||||
|
|
||||||
|
def given_single_and_then_correct():
|
||||||
|
assert split_columns("&", 2) == ['', '']
|
||||||
|
|
||||||
|
|
||||||
|
def given_too_much_columns_then_error():
|
||||||
|
assert split_columns("test & 2 & test", 1) == "Error!"
|
||||||
|
|
||||||
|
|
||||||
|
def given_default_then_correct():
|
||||||
|
assert split_columns("test & 2 & test", 3) == ["test ", " 2 ", " test"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_split_columns():
|
||||||
|
given_empty_then_correct()
|
||||||
|
given_no_and_then_correct()
|
||||||
|
given_single_and_then_correct()
|
||||||
|
given_too_much_columns_then_error()
|
||||||
|
given_single_and_then_correct()
|
||||||
25
program/tests/test_code/test_split_rows.py
Normal file
25
program/tests/test_code/test_split_rows.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
from code.main import split_rows
|
||||||
|
|
||||||
|
|
||||||
|
def given_empty_then_correct():
|
||||||
|
assert split_rows("") == ['']
|
||||||
|
|
||||||
|
|
||||||
|
def given_no_slash_then_correct():
|
||||||
|
assert split_rows("estsegsegtswegseg") == ["estsegsegtswegseg"]
|
||||||
|
|
||||||
|
|
||||||
|
def given_double_slash_then_correct():
|
||||||
|
assert split_rows("\\") == ['', '']
|
||||||
|
|
||||||
|
|
||||||
|
def given_actual_string_then_correct():
|
||||||
|
actual_string = "test & 2 & test \\ 4 & 5 & 6"
|
||||||
|
assert split_rows(actual_string) == ["test & 2 & test ", " 4 & 5 & 6"]
|
||||||
|
|
||||||
|
|
||||||
|
def test_split_rows():
|
||||||
|
given_empty_then_correct()
|
||||||
|
given_no_slash_then_correct()
|
||||||
|
given_double_slash_then_correct()
|
||||||
|
given_actual_string_then_correct()
|
||||||
@ -26,7 +26,7 @@ def given_p_then_array():
|
|||||||
Then: <!DOCTYPE html><html>
|
Then: <!DOCTYPE html><html>
|
||||||
"""
|
"""
|
||||||
assert tabular_columns_parameters(
|
assert tabular_columns_parameters(
|
||||||
"p{1.3pt}") == "style=\"vertical-align: top; width: 1.69px;\""
|
"p{1.3pt}") == "style='vertical-align: top; width: 1.69px;'"
|
||||||
|
|
||||||
|
|
||||||
def given_m_then_array():
|
def given_m_then_array():
|
||||||
@ -36,7 +36,7 @@ def given_m_then_array():
|
|||||||
Then: <!DOCTYPE html><html>
|
Then: <!DOCTYPE html><html>
|
||||||
"""
|
"""
|
||||||
assert tabular_columns_parameters(
|
assert tabular_columns_parameters(
|
||||||
"m{1.3pt}") == "style=\"vertical-align: middle; width: 1.69px;\""
|
"m{1.3pt}") == "style='vertical-align: middle; width: 1.69px;'"
|
||||||
|
|
||||||
|
|
||||||
def given_b_then_array():
|
def given_b_then_array():
|
||||||
@ -46,7 +46,7 @@ def given_b_then_array():
|
|||||||
Then: <!DOCTYPE html><html>
|
Then: <!DOCTYPE html><html>
|
||||||
"""
|
"""
|
||||||
assert tabular_columns_parameters(
|
assert tabular_columns_parameters(
|
||||||
"b{1.3pt}") == "style=\"vertical-align: bottom; width: 1.69px;\""
|
"b{1.3pt}") == "style='vertical-align: bottom; width: 1.69px;'"
|
||||||
|
|
||||||
|
|
||||||
def test_tabular_columns_parameters():
|
def test_tabular_columns_parameters():
|
||||||
|
|||||||
@ -129,18 +129,18 @@ def given_filled_p_brackets_then_correct():
|
|||||||
Then: <!DOCTYPE html><html>
|
Then: <!DOCTYPE html><html>
|
||||||
"""
|
"""
|
||||||
assert tabular_required_parameters("{p{1.3pt}}") == [
|
assert tabular_required_parameters("{p{1.3pt}}") == [
|
||||||
"style=\"vertical-align: top; width: 1.69px;\""]
|
"style='vertical-align: top; width: 1.69px;'"]
|
||||||
|
|
||||||
|
|
||||||
def given_complicated_then_correct():
|
def given_complicated_then_correct():
|
||||||
assert tabular_required_parameters("{|lp{1.3pt}c|r|}") == [
|
assert tabular_required_parameters("{|lp{1.3pt}c|r|}") == [
|
||||||
"style=\"border-left: 1px solid black",
|
"style='border-left: 1px solid black'",
|
||||||
"align='left'",
|
"align='left'",
|
||||||
"style=\"vertical-align: top; width: 1.69px;\"",
|
"style='vertical-align: top; width: 1.69px;'",
|
||||||
"align='center'",
|
"align='center'",
|
||||||
"style=\"border-left: 1px solid black",
|
"style='border-left: 1px solid black'",
|
||||||
"align='right'",
|
"align='right'",
|
||||||
"style=\"border-left: 1px solid black"
|
"style='border-left: 1px solid black'"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
30
program/tests/test_code/test_translate_column.py
Normal file
30
program/tests/test_code/test_translate_column.py
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
from code.main import translate_column
|
||||||
|
|
||||||
|
|
||||||
|
def given_empty_then_correct():
|
||||||
|
assert translate_column("") == ""
|
||||||
|
|
||||||
|
|
||||||
|
def given_plain_text_then_correct():
|
||||||
|
assert translate_column("plain text") == "plain text"
|
||||||
|
|
||||||
|
|
||||||
|
def given_just_hline_then_correct():
|
||||||
|
assert translate_column(r"\hline") == "<hr>"
|
||||||
|
|
||||||
|
|
||||||
|
def given_just_newline_then_correct():
|
||||||
|
assert translate_column('\newline') == "<br>"
|
||||||
|
|
||||||
|
|
||||||
|
def given_all_then_correct():
|
||||||
|
assert translate_column(
|
||||||
|
'\\hline \newline hline newline test') == "<hr> <br> hline newline test"
|
||||||
|
|
||||||
|
|
||||||
|
def test_translate_column():
|
||||||
|
given_empty_then_correct()
|
||||||
|
given_plain_text_then_correct()
|
||||||
|
given_just_hline_then_correct()
|
||||||
|
given_just_newline_then_correct()
|
||||||
|
given_all_then_correct()
|
||||||
13
program/tests/test_code/test_translate_inside_to_html.py
Normal file
13
program/tests/test_code/test_translate_inside_to_html.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
from code.main import translate_inside_to_html
|
||||||
|
from code.main import tabular_required_parameters
|
||||||
|
|
||||||
|
|
||||||
|
def given_correct_then_correct():
|
||||||
|
latex_string = "test & 2 & test \\ 4 & 5 & 6 \\"
|
||||||
|
parameters_string = "{ l | c | r }"
|
||||||
|
column_styles = tabular_required_parameters(parameters_string)
|
||||||
|
assert translate_inside_to_html(latex_string, column_styles) == "<html> <table><tr><td align='left'>test </td><td style='border-left: 1px solid black'align='center'> 2 </td><td style='border-left: 1px solid black'align='right'> test </td></tr><tr><td align='left'> 4 </td><td style='border-left: 1px solid black'align='center'> 5 </td><td style='border-left: 1px solid black'align='right'> 6 </td></tr><tr><td align='left'></td></tr> </table> </html>"
|
||||||
|
|
||||||
|
|
||||||
|
def test_translate_inside_to_html():
|
||||||
|
given_correct_then_correct()
|
||||||
Loading…
Reference in New Issue
Block a user