From ae3cbdf9c7b04f2d0f810169042fe2d723784ab1 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Wed, 7 Jun 2023 02:54:26 +0200 Subject: [PATCH] feat: final report, add user file input, categorize functional tests --- finalReport/Krzysztof_Rudnicki_38Final.pdf | Bin 0 -> 50095 bytes finalReport/Krzysztof_Rudnicki_38Final.tex | 427 ++++++++++++++++++ preliminaryReport/actualReport/class.png | Bin 72155 -> 0 bytes .../texfilecolumnswrong.tex | 0 .../texfilecolumnswrong.tex.html | 0 .../PASScomplicatedTable/texfilelonger.pdf | Bin 0 -> 3214 bytes .../texfilelonger.tex | 9 +- .../texfilelonger.tex.html | 0 .../PASSsimpleMultipleTables/texfile.pdf | Bin 0 -> 3987 bytes .../texfile.tex | 0 .../PASSsimpleMultipleTables/texfile.tex.html | 1 + .../code/functional_tests/texfile.tex.html | 1 - program/code/main.py | 12 +- program/code/texfile.tex.html | 2 +- 14 files changed, 445 insertions(+), 7 deletions(-) create mode 100644 finalReport/Krzysztof_Rudnicki_38Final.pdf create mode 100644 finalReport/Krzysztof_Rudnicki_38Final.tex delete mode 100644 preliminaryReport/actualReport/class.png rename program/code/functional_tests/{ => ERRORwrongColumnsNumber}/texfilecolumnswrong.tex (100%) rename program/code/functional_tests/{ => ERRORwrongColumnsNumber}/texfilecolumnswrong.tex.html (100%) create mode 100644 program/code/functional_tests/PASScomplicatedTable/texfilelonger.pdf rename program/code/functional_tests/{ => PASScomplicatedTable}/texfilelonger.tex (55%) rename program/code/functional_tests/{ => PASScomplicatedTable}/texfilelonger.tex.html (100%) create mode 100644 program/code/functional_tests/PASSsimpleMultipleTables/texfile.pdf rename program/code/functional_tests/{ => PASSsimpleMultipleTables}/texfile.tex (100%) create mode 100644 program/code/functional_tests/PASSsimpleMultipleTables/texfile.tex.html delete mode 100644 program/code/functional_tests/texfile.tex.html diff --git a/finalReport/Krzysztof_Rudnicki_38Final.pdf b/finalReport/Krzysztof_Rudnicki_38Final.pdf new file mode 100644 index 0000000000000000000000000000000000000000..5ce60e2a81a5ff53622ad99994af913e6a0e29e5 GIT binary patch literal 50095 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 if yes +\item read\_begin\_document - (optional) Checks if begin\{document\} function was written in tex file if yes adds to html\_string +\item HandleInside - Passes parsed tex data and html\_string to function handling inside of tex document +\end{itemize} + +\subsubsection{HandleInside} +Translates tex string starting at begin document and ending at end document, returns final html\_string \\ +Parameters: \\ +\begin{itemize} +\item tex\_data - String read from tex file +\item html\_string - Final output string to which table data and loose text will be added +\end{itemize} +Functions: +\begin{itemize} + \item HandleTable - Converts tex tables to html tables + \item HandleLoose - Goes through text that is not in table and converts it to html +\end{itemize} + +\subsubsection{HandleTable} +Converts tex tables to html tables \\ +Parameters: \\ +\begin{itemize} +\item tex\_data - String read from tex file +\item html\_string - Final output string to which table data and loose text will be added +\end{itemize} +Functions: +\begin{itemize} + \item TabArgHandler - Reads tex table parameters and translates them to html style + \item TabInsideHandler - Reads inside of tex table and together with parse parameters outputs correct table layout and look +\end{itemize} + +\subsubsection{TabInsideHandler} +Together with html table parameters translates inside of tex table to html \\ +Parameters: \\ +\begin{itemize} +\item TableContents - Latex string containing only inside of table +\end{itemize} +Functions: +\begin{itemize} + \item ReadTableContent - Parses table content and checks for errors + \item ConvertToHTML - Converts table inside to html +\end{itemize} + +\subsubsection{TabArgHandler} +Reads tex table parameters and translates them to html style \\ +Parameters: \\ +\begin{itemize} +\item TableArguments - Arguments provided with $\backslash$begin\{tabular\} environment +\end{itemize} +Functions: +\begin{itemize} + \item ReadTableARguments - Parses table arguments and checks for errors + \item ConvertToHTML - Converts table arguments to html style +\end{itemize} + +\subsection{Input/output description} +Input is a .tex file (\LaTeX \, file) \\ +Outpus is an .html file \\ +In case of errors error message will be outputed on the terminal \\ +Input File path is entered as an argument to terminal with "-i" or "--input" flag for example: +\begin{lstlisting}[language=bash] +python main.py -i texFile.tex +\end{lstlisting} +Output file path can be named by user by using "-o" or "--output" flag: +\begin{lstlisting}[language=bash] +python main.py -i texFile.tex -o htmlFile.html +\end{lstlisting} +If no "-o" flag is issued the output file will have the same name as input file with changed extension to html (so in this example texFile.tex will become texFile.html) \\ +If the path to file name consists of spaces, path name needs to be but in "" +\begin{lstlisting}[language=bash] +python main.py -i "My Folder/input.tex" +\end{lstlisting} +\subsection{Others} +\section{Unit tests} +There are over 12 unit tests for program functions, all of them can be ran by using python test environment: +\begin{lstlisting} +python -m pytest unit_tests + +collected 12 items + +unit_tests/test_code/test_begin_document.py . [ 8%] +unit_tests/test_code/test_begin_tabular.py . [ 16%] +unit_tests/test_code/test_document_class.py . [ 25%] +unit_tests/test_code/test_length_conversions.py . [ 33%] +unit_tests/test_code/test_only_pipes_and_space.py . [ 41%] +unit_tests/test_code/test_split_columns.py . [ 50%] +unit_tests/test_code/test_split_rows.py . [ 58%] +unit_tests/test_code/test_tabular_columns_parameters.py . [ 66%] +unit_tests/test_code/test_tabular_parameters.py . [ 75%] +unit_tests/test_code/test_tabular_required_parameters.py . [ 83%] +unit_tests/test_code/test_translate_column.py . [ 91%] +unit_tests/test_code/test_translate_inside_to_html.py . [100%] + +===================================================== 12 passed in 0.02s ====================================================== +\end{lstlisting} +\section{Functional test cases} + +\begin{tabular}{|p{3cm}|p{6cm}|p{6cm}|} + \hline + Title & Input (\LaTeX) & Output \\ + \hline + + empty file & + \begin{lstlisting} + + \end{lstlisting}& + \begin{lstlisting} +Error! expected \documentclass at the begining of LaTeX file + \end{lstlisting} \\ + \hline + + Document class & + \begin{lstlisting} +\documentclass[options]{class} + \end{lstlisting}& + \begin{lstlisting} +Error! expected \begin{document} after document class + \end{lstlisting} \\ + \hline + + \begin{lstlisting} +Extra text between document class and begin document + \end{lstlisting}& + \begin{lstlisting} +\documentclass[options]{class} +"extra text" +\begin{document} + \end{lstlisting}& + \begin{lstlisting} +Error! unexpected text between document class and begin document + \end{lstlisting} \\ + \hline + +\begin{lstlisting} +Just document class and begin document +\end{lstlisting}& +\begin{lstlisting} +\documentclass[options]{class} +\begin{document} +\end{lstlisting}& +\begin{lstlisting} +Error! no \end{document} at the end of LaTeX code +\end{lstlisting} \\ +\hline + + \end{tabular} + +\begin{tabular}{|p{3cm}|p{6cm}|p{6cm}|} +\hline +Title & Input (\LaTeX) & Output \\ +\hline + +\begin{lstlisting} +Just document class and begin/end document +\end{lstlisting}& +\begin{lstlisting} +\documentclass[options]{class} +\begin{document} +\end{document} +\end{lstlisting}& +\begin{lstlisting} + + +\end{lstlisting} \\ +\hline + +\begin{lstlisting} +Plain text inside +\end{lstlisting}& +\begin{lstlisting} +\documentclass[options]{class} +\begin{document} +Lorem ipsum dolor sit amet. +\end{document} +\end{lstlisting}& +\begin{lstlisting} + +Lorem ipsum dolor sit amet. + +\end{lstlisting} \\ +\hline + +\begin{lstlisting} +Reduntant \end{document} (ignored) +\end{lstlisting}& +\begin{lstlisting} +\documentclass[options]{class} +\begin{document} +Lorem ipsum dolor sit amet. +\end{document} +\end{document} +\end{lstlisting}& +\begin{lstlisting} + +Lorem ipsum dolor sit amet. + +\end{lstlisting} \\ +\hline + +\begin{lstlisting} +LaTeX comments +\end{lstlisting}& +\begin{lstlisting} +\documentclass[options]{class} +\begin{document} +Lorem ipsum dolor sit amet. +% some comment +\end{document} +\end{document} +\end{lstlisting}& +\begin{lstlisting} +Error! LaTeX comment detected at line 3 +\end{lstlisting} \\ +\hline + + + +\end{tabular} + +\begin{tabular}{|p{3cm}|p{6cm}|p{6cm}|} + \hline +Title & Input (\LaTeX) & Output \\ +\hline + +\begin{lstlisting} +Table with vertical lines +\end{lstlisting}& +\begin{lstlisting} +\documentclass[options]{class} +\begin{document} +\begin{tabular}{ l | c | r } +test & 2 & test \\ +4 & 5 & 6 \\ +\end{tabular} +\end{document} +\end{lstlisting}& +\begin{lstlisting} + + + + + + + + + + + + +
test2test
456
+ +\end{lstlisting} \\ +\hline + +\begin{lstlisting} +Missing & +\end{lstlisting}& +\begin{lstlisting} +\documentclass[options]{class} +\begin{document} +\begin{tabular}{ l c r } +1 & 2 & 3 \\ +4 & 5 6 \\ +\end{tabular} +\end{document} +\end{lstlisting}& +\begin{lstlisting} +Error! Missing third column in second row +\end{lstlisting} \\ +\hline + +\end{tabular} + +\begin{tabular}{|p{3cm}|p{6cm}|p{6cm}|} + \hline +Title & Input (\LaTeX) & Output \\ +\hline + +\begin{lstlisting} +Too much columns +\end{lstlisting}& +\begin{lstlisting} +\documentclass[options]{class} +\begin{document} +\begin{tabular}{ l c r } +1 & 2 & 3 & 4 & 5 \\ +4 & 5 6 \\ +\end{tabular} +\end{document} +\end{lstlisting}& +\begin{lstlisting} +Error! Too much columns in row 1, expected 3, got 5 +\end{lstlisting} \\ +\hline + +\end{tabular} + +\end{document} \ No newline at end of file diff --git a/preliminaryReport/actualReport/class.png b/preliminaryReport/actualReport/class.png deleted file mode 100644 index 63b96fa6bd776db573b5235bfcc832431f81160e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72155 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 Vb1Pq%%9US=jo7H0MpG+PaM?@w#rTQS@ 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 diff --git a/program/code/functional_tests/texfilecolumnswrong.tex b/program/code/functional_tests/ERRORwrongColumnsNumber/texfilecolumnswrong.tex similarity index 100% rename from program/code/functional_tests/texfilecolumnswrong.tex rename to program/code/functional_tests/ERRORwrongColumnsNumber/texfilecolumnswrong.tex diff --git a/program/code/functional_tests/texfilecolumnswrong.tex.html b/program/code/functional_tests/ERRORwrongColumnsNumber/texfilecolumnswrong.tex.html similarity index 100% rename from program/code/functional_tests/texfilecolumnswrong.tex.html rename to program/code/functional_tests/ERRORwrongColumnsNumber/texfilecolumnswrong.tex.html diff --git a/program/code/functional_tests/PASScomplicatedTable/texfilelonger.pdf b/program/code/functional_tests/PASScomplicatedTable/texfilelonger.pdf new file mode 100644 index 0000000000000000000000000000000000000000..0ea7913a20722d8dd850bab45405e24be27bcf16 GIT binary patch literal 3214 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 literal 0 HcmV?d00001 diff --git a/program/code/functional_tests/texfilelonger.tex b/program/code/functional_tests/PASScomplicatedTable/texfilelonger.tex similarity index 55% rename from program/code/functional_tests/texfilelonger.tex rename to program/code/functional_tests/PASScomplicatedTable/texfilelonger.tex index 4bc0aa29..bd0f8e90 100644 --- a/program/code/functional_tests/texfilelonger.tex +++ b/program/code/functional_tests/PASScomplicatedTable/texfilelonger.tex @@ -1,9 +1,10 @@ -\documentclass{class} +\documentclass{article} \begin{document} \begin{tabular}{ l | c | r } + \hline test & 2 & test \\ +\hline 4 & 5 & 6 \\ +\hline \end{tabular} -\end{document} -\end{lstlisting}& -\begin{lstlisting} \ No newline at end of file +\end{document} \ No newline at end of file diff --git a/program/code/functional_tests/texfilelonger.tex.html b/program/code/functional_tests/PASScomplicatedTable/texfilelonger.tex.html similarity index 100% rename from program/code/functional_tests/texfilelonger.tex.html rename to program/code/functional_tests/PASScomplicatedTable/texfilelonger.tex.html diff --git a/program/code/functional_tests/PASSsimpleMultipleTables/texfile.pdf b/program/code/functional_tests/PASSsimpleMultipleTables/texfile.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1841e2f2f9d13997fecb08bcaa3bc466a67c1123 GIT binary patch literal 3987 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 literal 0 HcmV?d00001 diff --git a/program/code/functional_tests/texfile.tex b/program/code/functional_tests/PASSsimpleMultipleTables/texfile.tex similarity index 100% rename from program/code/functional_tests/texfile.tex rename to program/code/functional_tests/PASSsimpleMultipleTables/texfile.tex diff --git a/program/code/functional_tests/PASSsimpleMultipleTables/texfile.tex.html b/program/code/functional_tests/PASSsimpleMultipleTables/texfile.tex.html new file mode 100644 index 00000000..931d680e --- /dev/null +++ b/program/code/functional_tests/PASSsimpleMultipleTables/texfile.tex.html @@ -0,0 +1 @@ +some random text
inside table
some random text 2
inside table2
inside table3
\ No newline at end of file diff --git a/program/code/functional_tests/texfile.tex.html b/program/code/functional_tests/texfile.tex.html deleted file mode 100644 index eeda3484..00000000 --- a/program/code/functional_tests/texfile.tex.html +++ /dev/null @@ -1 +0,0 @@ -some random text
inside table
some random text 2
inside table2
inside table3
\ No newline at end of file diff --git a/program/code/main.py b/program/code/main.py index d1c82690..32574a20 100644 --- a/program/code/main.py +++ b/program/code/main.py @@ -1,6 +1,7 @@ """ Program for converting Latex files into html files """ +import argparse def command_name_check(latex_string, command_name): @@ -537,8 +538,17 @@ def main_function(tex_filename): return html_string +def handle_arguments(): + parser = argparse.ArgumentParser( + description='Specify tex filename and path') + parser.add_argument('--filename', '-f', + help='Specify tex filename, include path if needed ', required=False, default="texfile.tex") + args = parser.parse_args() + return args.filename + + if __name__ == "__main__": - TEX_FILENAME = "texfile.tex" + TEX_FILENAME = handle_arguments() FINAL_HTML = main_function(TEX_FILENAME) with open(TEX_FILENAME + ".html", "w", encoding="UTF-8") as f: f.write(FINAL_HTML) diff --git a/program/code/texfile.tex.html b/program/code/texfile.tex.html index eeda3484..931d680e 100644 --- a/program/code/texfile.tex.html +++ b/program/code/texfile.tex.html @@ -1 +1 @@ -some random text
inside table
some random text 2
inside table2
inside table3
\ No newline at end of file +some random text
inside table
some random text 2
inside table2
inside table3
\ No newline at end of file