X-Git-Url: https://git.armaanb.net/?p=lightcards.git;a=blobdiff_plain;f=lightcards%2Fparse.py;fp=lightcards%2Fparse.py;h=8e0d320f6202f5e0bde347b540bcca36d02cc93e;hp=3a1306bfae98840ba312fc58deff160d667ceeb8;hb=3ec382bac0913a7268e8059eaf337a54cf1b0f5c;hpb=43097bb173fc4a85e61cce3d6cdfe7ec56a448df diff --git a/lightcards/parse.py b/lightcards/parse.py index 3a1306b..8e0d320 100644 --- a/lightcards/parse.py +++ b/lightcards/parse.py @@ -10,12 +10,18 @@ from .deck import Card def md2html(file): """Use the markdown module to convert input to HTML""" - try: - return markdown.markdown(open(file, "r").read(), extensions=["tables"]) - except FileNotFoundError: - raise Exception( - f'lightcards: "{file}": No such file or directory' - ) from None + outp = "" + for i in file: + try: + outp += markdown.markdown( + open(i, "r").read(), extensions=["tables"] + ) + except FileNotFoundError: + raise Exception( + f'lightcards: "{i}": No such file or directory' + ) from None + + return outp def parse_html(html): @@ -24,21 +30,24 @@ def parse_html(html): def clean_text(inp): return inp.get_text().rstrip() - soup = BeautifulSoup(html, "html.parser").find("table") + soup = BeautifulSoup(html, "html.parser").find_all("table") outp = [] - try: - for x in soup.find_all("tr"): - outp.append(Card(tuple([clean_text(y) for y in x.find_all("td")]))) - except AttributeError: - raise Exception("lightcards: No table found") from None + for table in soup: + try: + for x in table.find_all("tr"): + y = x.find_all("td") + if y: + outp.append(Card(tuple([clean_text(z) for z in y]))) + except AttributeError: + raise Exception("lightcards: No table found") from None - ths = soup.find_all("th") - if len(ths) != 2: - raise Exception("lightcards: Headings malformed") + ths = table.find_all("th") + if len(ths) != 2: + raise Exception("lightcards: Headings malformed") # Return a tuple of nested lists - return ([clean_text(x) for x in ths], outp[1:]) + return ([clean_text(x) for x in ths], outp) def main(file):