56 lines
2.1 KiB
Python
56 lines
2.1 KiB
Python
from shutil import copyfile
|
|
import os
|
|
|
|
|
|
def render_book_line(book_object):
|
|
book = book_object
|
|
book["rating"] = "?" if not "rating" in book else book["rating"]
|
|
book["url"] = "" if not "url" in book else book["url"]
|
|
book["year"] = "" if not "year" in book else book["year"]
|
|
return "| {} | {} | [{}]({}) | {} | \n".format(
|
|
book["title"], book["author"], book["rating"], book["url"], book["year"]
|
|
)
|
|
|
|
|
|
# TODO: refine this logic
|
|
def render(in_file, out_file, library):
|
|
"""
|
|
This renders the file to the out_file location
|
|
savig the new file to tmp_file location, the copying it to out-file and deleting tmp_file
|
|
this is done to prevent issues if the in and the out file are the same
|
|
"""
|
|
tmp_file = "./.tmp-file.md"
|
|
open(tmp_file, "a").close()
|
|
books_not_reached = True
|
|
with open(tmp_file, "w") as out_file_tmp:
|
|
with open(in_file) as original_file:
|
|
for line in original_file:
|
|
|
|
if line.strip() in library:
|
|
if not books_not_reached:
|
|
out_file_tmp.write("\n")
|
|
books_not_reached = False
|
|
|
|
# render chapter and start of the table
|
|
out_file_tmp.write(line)
|
|
if len(library[line.strip()]) > 0:
|
|
out_file_tmp.write(
|
|
"| Name | Author | Goodreads Rating | Year Published | \n"
|
|
)
|
|
out_file_tmp.write(
|
|
"|------|--------|------------------|----------------| \n"
|
|
)
|
|
# render books
|
|
for book in library[line.strip()]:
|
|
out_file_tmp.write(render_book_line(book))
|
|
elif books_not_reached:
|
|
out_file_tmp.write(line)
|
|
elif line.startswith("## License"):
|
|
out_file_tmp.write("\n")
|
|
out_file_tmp.write("\n")
|
|
out_file_tmp.write(line)
|
|
books_not_reached = True
|
|
|
|
copyfile(tmp_file, out_file)
|
|
os.remove(tmp_file)
|