From 39cd9dc0536817b34ed4798cc6b834fe73b887f8 Mon Sep 17 00:00:00 2001 From: laurentheirendt <laurent.heirendt@uni.lu> Date: Wed, 14 Sep 2022 13:06:58 +0200 Subject: [PATCH] add extraction of metadata from yml --- .ci/generateIndex.py | 67 +++++++++++++++++++++++++++++--------------- 1 file changed, 44 insertions(+), 23 deletions(-) diff --git a/.ci/generateIndex.py b/.ci/generateIndex.py index 0baa8da5..0b4912e2 100644 --- a/.ci/generateIndex.py +++ b/.ci/generateIndex.py @@ -2,6 +2,7 @@ import os, re from os import path from natsort import natsorted from pathlib import Path +import yaml def line_prepender(filename, line): with open(filename, 'r+') as f: @@ -77,12 +78,23 @@ def save_tag(localroot, root, filename, tag): length_tag = len(tag) - with open(filename, 'r') as f: - for line in f: - # check for the start of the section - if line[0:length_tag+1] == tag + ":": - return_tag = line[length_tag+2:] - break + if "yml" in filename: + with open(filename, "r") as stream: + try: + metadata = list(yaml.load_all(stream, Loader=yaml.FullLoader)) + except yaml.YAMLError as exc: + print(exc) + + return_tag = metadata[0][tag] + + else: + with open(filename, 'r') as f: + for line in f: + # check for the start of the section + if line[0:length_tag+1] == tag + ":": + return_tag = line[length_tag+2:] + return_tag = return_tag.replace('"', '') + break # change back to the local root os.chdir(localroot) @@ -211,6 +223,10 @@ def generate_header(folder, permalink, shortcut, order, legacy_from, title, desc else: header += "---" + # add title for QMS documents + if "qms" in shortcut: + header += "\n# " + title + return header def generate_whitelist_entry(folder, permalink, shortcut): @@ -291,6 +307,10 @@ for folder in cardDirs: title = save_tag(localroot, root, file, "title") description = save_tag(localroot, root, file, "description") + # extract the title from the QMS metadata + if "qms" in root: + title = save_tag(localroot, root, file[:-3] + ".yml", "title") + # remove the previous header n = remove_header(localroot, root, file) @@ -332,23 +352,24 @@ for folder in cardDirs: line_prepender(fileName, header) # open file and get the title after the header - count = 0 - title = "" - bp = n + 1 - - with open(fileName, 'r') as f: - for line in f: - count += 1 - if count == bp: - if len(line) > 2: - title = line - break - else: - bp += 1 - - # remove first and last chars - title = title.rstrip("\n\r") - title = title[2:] + if "qms" not in root: + count = 0 + title = "" + bp = n + 1 + + with open(fileName, 'r') as f: + for line in f: + count += 1 + if count == bp: + if len(line) > 2: + title = line + break + else: + bp += 1 + + # remove first and last chars + title = title.rstrip("\n\r") + title = title[2:] localIndexArr[indexS].append(build_link(title, root)) -- GitLab