From 3b4b2c183a5a4b6eb820a9ccf90cfa5f02a6c9cd Mon Sep 17 00:00:00 2001 From: Aleksei Pronkin <31882933+alexey-pronkin@users.noreply.github.com> Date: Thu, 11 Nov 2021 01:13:54 +0300 Subject: [PATCH] Try to make bib parser --- tools/precommit-bib.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 tools/precommit-bib.py diff --git a/tools/precommit-bib.py b/tools/precommit-bib.py new file mode 100644 index 0000000000..e4d1174e85 --- /dev/null +++ b/tools/precommit-bib.py @@ -0,0 +1,33 @@ +import json +#TODO do not split {} by ,. We need a more deeper parser! +bib_list = {} +with open("qmlcourseRU/_bibliography/references.bib", "r") as bibfile: + bibtex = bibfile.readlines() + entry_type=None + entry=None + for line in bibtex: + # print(line) + line = line.strip() #remove spaces and tabs at start/end of line (trimm string) + # print(line) + if line.startswith("@"): + if entry_type is not None: + bib_list[entry_label] = { + #TODO: all variants + "entry_type":entry_type, + "entry_label":entry_label, + "entry":entry, + } + + entry_type, entry = line.split("{") + entry_label, entry = entry.split(",") + # entry = "{" + entry attepmt to use json.loads() + else: + entry+=line +print(bib_list) +with open("qmlcourseRU/_bibliography/references2.bib", "w") as bibfile: + for k, v in bib_list.items(): + bibfile.writelines(v["entry_type"]+"{"+v["entry_label"]+",\n") + split_entry_lines = v["entry"].split("},") + for i in split_entry_lines[:-1]: + bibfile.writelines(i+"},\n") + bibfile.writelines(split_entry_lines[-1]+"\n")