From b20714fe29a38c93536c3c9678dc87bba6319f1c Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Wed, 10 May 2023 18:16:28 +0200 Subject: [PATCH] feat: length conversion --- examples/{ => easyTable}/table1.pdf | Bin 4532 -> 4533 bytes examples/{ => easyTable}/table1.tex | 0 examples/paragraphs/table.tex | 10 ++ program/code/main.py | 36 +++++- program/tests/test_code/test_begin_tabular.py | 8 ++ .../test_code/test_length_conversions.py | 98 ++++++++++++++++ .../test_code/test_parameter_argument.py | 31 +++++ .../test_tabular_columns_parameters.py | 108 ++++++++++++++++++ 8 files changed, 287 insertions(+), 4 deletions(-) rename examples/{ => easyTable}/table1.pdf (74%) rename examples/{ => easyTable}/table1.tex (100%) create mode 100644 examples/paragraphs/table.tex create mode 100644 program/tests/test_code/test_length_conversions.py create mode 100644 program/tests/test_code/test_parameter_argument.py create mode 100644 program/tests/test_code/test_tabular_columns_parameters.py diff --git a/examples/table1.pdf b/examples/easyTable/table1.pdf similarity index 74% rename from examples/table1.pdf rename to examples/easyTable/table1.pdf index 7c7c02011ab45c63f30abd53d32b7c58730c82bc..b6027cf77ac6655066d2b3680e74a51f05d215f4 100644 GIT binary patch delta 1144 zcmV-;1c&>yBef&2`T>77K0XR_baG{3Z3=kWUD91^gD?~Z;Cp{XE;~l?v)X|OtyU1$ zZPa%6X*@ci#t`+Q|9+ZRb}>QWNzOSj$+6QSD`Yz|`%Cwtq>17%F)D`JgHf(cCOEXeVNw8_ z?}@&mL2*Hv%Z9AjnV*Ek`TQgn$?D&{x2D}|@x%2J?xu6N?lNJ zgdNSx8U+wmh_It*jf~7OuIIHJ=+X&)jUXni=W8+TVlI5Sn^w|aN2y*dS?2u(PXVdG zlaUY;vu6XY3V+FN+dvGx_bYg-jldqxrX>grc&QPgO&i#55FYmwEl>@e)cWJNl&#~4Z1p&p9>0>#Hcc#fY} zCT(mrfCsZN4`AEo&^91Y$T8|M$4efd9J=>p?bcL-WA<7cvgiE~9tVUH=yQA=4*NWX zEf;BH27il7mjE?K7p;Q}l%Ekl5Bn>-YR_-#%AcoAy0bZXV-ds}F_Ajf+Dnv-l~N%5 zAkpZKiPo`1FVSHK^F-_u4-V>iv4i=d7dj54Onkpf6L5zH7ZIq=5_+)=MG^)iRKk(6 zQb#z3otJYJ`$8nidxIUpY~4OJUAfW1>CS;{mVef!^Uk81yJ&Oq?Pg{7X~}W4GI_g8 zD+gbn>c;G&^4WH5=SAIAr@=I{PiDw|RGF!YG9N@4v0F5!A>DL1?9AR#k2Fj!|H9PU zsyGl;Zu(s77WW_mWcO|~yP^9~?QcAr)?1e;K#w`AJCAs%*qUm(123fhAFfT2zx0^t zYkz)UWX%g`6?Um+Zhl5eB8)_cz!j&Z;KEN>M7$N-X_@Z~AY1Ozyatc*o_40=xwN&p z!naT3hi`Iz+4ppB{@p!?SQa}YX(RhBpmrJ>bM==;zf<&|+>G8@KDuUK%B{_a2KI-o zZ&#L53Dzy1?w4v~f0hNI4RAbH@e3HtI{_?{kq|6GW-(zhG&wV3G&wV6H#0V3FflhY zI5TEpHDhLDHD+TpK0IbIVKOv1Gh#G3Gi5h3HexU_H#9giW??mBW@9yGV>FZh5MVA# z63em|avMT#ezNm|1@=x76K0XR_baG{3Z3=kWUDDlZgD?~a@Oz&kmm8z_S?xfCPAdrO zHne?!G#;H$V~Bdux1Z)Oy_lfzOU^kl$+6QSD`Yn@`$rF=qKP$~tTm0ptOcTiUG=zg(~3Zn}g!PUt49JRkC)56FiQ=^u@J z4|97cf+4{7%?3MuZt8Cd& zIo>>_TS%+pz^mujcWh1m17SJ)T4Z%BTMWCgS&>fMF-Fq0(L)hIr1&s0=lE%5)5cXj zc(7~x0PfK24-E(ua)@du%%zZ0_x*da!^T#|vqkgpMOAlQ3-4MBJmnM?|W%m>`x$Bqk!E5{{IWI>OPk zUd~k<3Xvr54fX`H)#0gW%U#U8?j6V`e`#$y@BD7HTwZ*;S-M?XavUsee%Pj!hp$d` zV|R=4*|luvMcq`V-Z*nlw$FZ4nXQU4?=3Q7w`fj%x@o`P+MTB!X_$QenXNZfu_vnh z^!e7!?m;Nkk=+(hJ1vd5`pcu=Df&-t25&7NT(d9b#$`kU`@`0?D@&;a z=NC_ROSN`)WkF~Q9M4t!0)wAB0fLi~5G+DtVL3QrVKHPmIAmdDVKFgdFf}$~F*GwX zV=`knF*9a9JY!)wIAUQjWH~rwVPs)3F=H?_He)d~Gc#i{V>mH0W|9$LE=m&1vKI=l zA@t@aJ1GV#seSr+y%^&ju9RSH8~0;B}Gq0 E3e>kD$N&HU diff --git a/examples/table1.tex b/examples/easyTable/table1.tex similarity index 100% rename from examples/table1.tex rename to examples/easyTable/table1.tex diff --git a/examples/paragraphs/table.tex b/examples/paragraphs/table.tex new file mode 100644 index 00000000..719b610f --- /dev/null +++ b/examples/paragraphs/table.tex @@ -0,0 +1,10 @@ +\documentclass{article} +\begin{document} + +Here is a table: + +\begin{tabular}{p[5cm]} +test +\end{tabular} + +\end{document} \ No newline at end of file diff --git a/program/code/main.py b/program/code/main.py index 6993d578..e000d13d 100644 --- a/program/code/main.py +++ b/program/code/main.py @@ -20,11 +20,16 @@ def generic_checks(latex_string): if "}" not in latex_string: print(latex_string + error_arrays[1]) return "Error!" + return + +def generic_checks_command(latex_string): + error_arrays = return_error_arrays() + if generic_checks(latex_string) == "Error!": + return "Error!" if latex_string[0] != "\\": print(latex_string + error_arrays[6]) return "Error!" return - def document_class(latex_string): @@ -33,7 +38,7 @@ def document_class(latex_string): \documentclass{article} """ error_arrays = return_error_arrays() - if generic_checks(latex_string) == "Error!": + if generic_checks_command(latex_string) == "Error!": return "Error!" if latex_string[len("\\documentclass{") - 1] != "{": print(latex_string + error_arrays[3]) @@ -52,7 +57,7 @@ def begin_document(latex_string): Converts LaTeX begin document method to html \begin{document} """ - if generic_checks(latex_string) == "Error!": + if generic_checks_command(latex_string) == "Error!": return "Error!" if command_name_check(latex_string, "begin") == "Error!": return "Error!" @@ -62,7 +67,7 @@ def begin_tabular(latex_string): r""" Checks if LaTeX begin tabular method is correct """ - if generic_checks(latex_string) == "Error!": + if generic_checks_command(latex_string) == "Error!": return "Error!" if command_name_check(latex_string, "begin") == "Error!": return "Error!" @@ -78,6 +83,29 @@ def tabular_parameters(latex_string): return "" return "Error!" +def tabular_columns_parameters(latex_string): + if generic_checks(latex_string) == "Error!": + return "Error!" + return latex_string + +def length_conversions(latex_length): + length_dictionary = { + "pt": [1.3, "px"], + + "mm": [1, "mm"], + + "cm": [1, "cm"], + + "in": [1, "in"], + + "ex": [1, "ex"], + + "em": [1, "em"], + } + return length_dictionary.get(latex_length, "Error!") + +def parameter_arguments(latex_string): + return latex_string if __name__ == "__main__": document_class("") diff --git a/program/tests/test_code/test_begin_tabular.py b/program/tests/test_code/test_begin_tabular.py index 551f1b23..dd02bd7a 100644 --- a/program/tests/test_code/test_begin_tabular.py +++ b/program/tests/test_code/test_begin_tabular.py @@ -48,6 +48,14 @@ def given_no_slash_then_error(): """ assert begin_tabular(r"begin{tabular}") == "Error!" +def given_tabular_star_then_error(): + """ + Given: no backslash at start + When: N/A + Then: Error message + """ + assert begin_tabular(r"begin{tabular*}") == "Error!" + def given_correct_then_html(): """ diff --git a/program/tests/test_code/test_length_conversions.py b/program/tests/test_code/test_length_conversions.py new file mode 100644 index 00000000..45ab6500 --- /dev/null +++ b/program/tests/test_code/test_length_conversions.py @@ -0,0 +1,98 @@ +""" + Tests begin document function +""" +from code.main import length_conversions + +# Write python tests for a function translating LaTeX documentclass to html +def given_empty_then_error(): + """ + Given: "" + When: N/A + Then: Error message + """ + assert length_conversions("") == "Error!" + +def given_pt_then_px(): + """ + Given: "" + When: N/A + Then: Error message + """ + assert length_conversions("pt") == [1.3, "px"] + +def given_mm_then_mm(): + """ + Given: "" + When: N/A + Then: Error message + """ + assert length_conversions("mm") == [1, "mm"] + +def given_cm_then_cm(): + """ + Given: "" + When: N/A + Then: Error message + """ + assert length_conversions("cm") == [1, "cm"] + +def given_in_then_in(): + """ + Given: "" + When: N/A + Then: Error message + """ + assert length_conversions("in") == [1, "in"] + +def given_ex_then_ex(): + """ + Given: "" + When: N/A + Then: Error message + """ + assert length_conversions("ex") == [1, "ex"] + +def given_em_then_em(): + """ + Given: "" + When: N/A + Then: Error message + """ + assert length_conversions("em") == [1, "em"] + +def given_mu_then_error(): + """ + Given: "" + When: N/A + Then: Error message + """ + assert length_conversions("mu") == "Error!" + +def given_sp_then_error(): + """ + Given: "" + When: N/A + Then: Error message + """ + assert length_conversions("sp") == "Error!" + +def given_unknown_then_error(): + """ + Given: "" + When: N/A + Then: Error message + """ + assert length_conversions("unknown") == "Error!" + +def test_begin_tabular(): + given_empty_then_error() + given_pt_then_px() + given_mm_then_mm() + given_cm_then_cm() + given_in_then_in() + given_ex_then_ex() + given_em_then_em() + given_mu_then_error() + given_sp_then_error() + given_unknown_then_error() + diff --git a/program/tests/test_code/test_parameter_argument.py b/program/tests/test_code/test_parameter_argument.py new file mode 100644 index 00000000..6af74064 --- /dev/null +++ b/program/tests/test_code/test_parameter_argument.py @@ -0,0 +1,31 @@ +from code.main import parameter_arguments + +def given_empty_then_error(): + """ + Given: + When: N/A + Then: + """ + assert tabular_columns_parameters("") == "Error!" + +def given_unknown_then_error(): + """ + Given: + When: N/A + Then: + """ + assert tabular_columns_parameters("l{5cm}") == "Error!" + +def given_p_then_array(): + """ + Given: + When: N/A + Then: + """ + assert tabular_columns_parameters("p{5cm}") == ["p", 5, [5, "cm"]] + + +def test_parameter_arguments(): + given_empty_then_empty() + given_empty_brackets_then_empty() + given_c_then_array() \ No newline at end of file diff --git a/program/tests/test_code/test_tabular_columns_parameters.py b/program/tests/test_code/test_tabular_columns_parameters.py new file mode 100644 index 00000000..3d7ffd04 --- /dev/null +++ b/program/tests/test_code/test_tabular_columns_parameters.py @@ -0,0 +1,108 @@ +""" + Tests tabular_parameters function +""" + +from code.main import tabular_columns_parameters + +def given_empty_then_empty(): + """ + Given: + When: N/A + Then: + """ + assert tabular_columns_parameters("") == "Error!" + +def given_empty_brackets_then_empty(): + """ + Given: {} + When: N/A + Then: + """ + assert tabular_columns_parameters("{}") == "Error!" + +def given_c_then_array(): + """ + Given: [c] + When: N/A + Then: + """ + assert tabular_columns_parameters("{c}") == ["align='center'"] + +def given_l_then_array(): + """ + Given: [c] + When: N/A + Then: + """ + assert tabular_columns_parameters("{l}") == ["align='left'"] + +def given_r_then_array(): + """ + Given: [c] + When: N/A + Then: + """ + assert tabular_columns_parameters("{r}") == ["align='right'"] + +def given_line_then_array(): + """ + Given: [c] + When: N/A + Then: + """ + assert tabular_columns_parameters("|") == ["{style=\"border-left: 1px solid black;\"}"] + +def given_double_line_then_array(): + """ + Given: [c] + When: N/A + Then: + """ + assert tabular_columns_parameters("||") == ["{style=\"border-left: 1px solid black;\"}", "{style=\"border-left: 1px solid black;\"}"] + +def given_c_then_array(): + """ + Given: [c] + When: N/A + Then: + """ + assert tabular_columns_parameters("{c}") == ["c"] + +def given_c_then_array(): + """ + Given: [c] + When: N/A + Then: + """ + assert tabular_columns_parameters("{c}") == ["c"] + +def given_c_then_array(): + """ + Given: [c] + When: N/A + Then: + """ + assert tabular_columns_parameters("{c}") == ["c"] + +def given_c_then_array(): + """ + Given: [c] + When: N/A + Then: + """ + assert tabular_columns_parameters("{c}") == ["c"] + +def given_c_then_array(): + """ + Given: [c] + When: N/A + Then: + """ + assert tabular_columns_parameters("{c}") == ["c"] + + + +def test_tabular_columns_parameters(): + given_empty_then_empty() + given_empty_brackets_then_empty() + given_c_then_array()