]> git.armaanb.net Git - lightcards.git/commitdiff
Add lenient option
authorArmaan Bhojwani <me@armaanb.net>
Sun, 14 Feb 2021 02:51:11 +0000 (21:51 -0500)
committerArmaan Bhojwani <me@armaanb.net>
Sun, 14 Feb 2021 02:51:11 +0000 (21:51 -0500)
lightcards/parse.py
lightcards/runner.py
man/lightcards.1
man/lightcards.1.md

index 8e0d320f6202f5e0bde347b540bcca36d02cc93e..95319f4628c5aecc1f683267be547f3f0fbbaf72 100644 (file)
@@ -24,35 +24,28 @@ def md2html(file):
     return outp
 
 
-def parse_html(html):
+def parse_html(html, lenient):
     """Use BeautifulSoup to parse the HTML"""
 
     def clean_text(inp):
         return inp.get_text().rstrip()
 
-    soup = BeautifulSoup(html, "html.parser").find_all("table")
-    outp = []
-
-    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
+    soup = BeautifulSoup(html, "html.parser")
+    outp, ths = [], []
 
+    for table in soup.find_all("table"):
         ths = table.find_all("th")
         if len(ths) != 2:
-            raise Exception("lightcards: Headings malformed")
+            if not lenient:
+                raise Exception("lightcards: Headings malformed")
+        else:
+            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
 
     # Return a tuple of nested lists
     return ([clean_text(x) for x in ths], outp)
-
-
-def main(file):
-    return parse_html(md2html(file))
-
-
-if __name__ == "__main__":
-    print(main(sys.argv[1]))
index 2154c95766aed8cd216863fb9500f166a23fda71..fdbbf9267573e0f50112454e2bb6855e37cdd6fb 100644 (file)
@@ -34,6 +34,12 @@ def parse_args():
         help="specify which view to start in",
     )
     parser.add_argument("inp", metavar="input_files", type=str, nargs="+")
+    parser.add_argument(
+        "-l",
+        "--lenient",
+        action="store_true",
+        help="don't raise exception if tables are malformed",
+    )
     parser.add_argument(
         "-a",
         "--alphabetize",
@@ -111,7 +117,7 @@ def main(args=sys.argv):
         sys.tracebacklimit = 0
 
     global headers, stack
-    (headers, stack) = parse.parse_html(parse.md2html(args.inp))
+    (headers, stack) = parse.parse_html(parse.md2html(args.inp), args.lenient)
 
     show(args, stack, headers, conf)
 
index a2e421e6694e51361dd0f9f2595143df18e3e813..247b6b1bfae9cc77171cc8a8e6bb01e7ed5e1e6d 100644 (file)
@@ -40,6 +40,9 @@ Specify startup view
 .TP
 \f[B]-c\f[R] [config file], \f[B]--config\f[R] [config file]
 Specify a custom config file
+.TP
+\f[B]-l\f[R], \f[B]--lenient\f[R]
+Don\[cq]t raise exception if tables are malformed
 .SH KEYS
 .TP
 \f[B]l\f[R], \f[B]right\f[R]
index 568aa5eebaa9e76a926b63f1ed0e3b48e68a5eb2..64b55db53b99beea0813857609b68cde9a44d29b 100644 (file)
@@ -42,6 +42,9 @@ lightcards \[options\] \[input files\]
 **-c** \[config file\], **\--config** \[config file\]
 : Specify a custom config file
 
+**-l**, **\--lenient**
+: Don't raise exception if tables are malformed
+
 # KEYS
 **l**, **right**
 : Next card