From 127130ab909dac8886f45ec856f1d1bce3c7bcc0 Mon Sep 17 00:00:00 2001 From: David Luevano Alvarado Date: Mon, 1 May 2023 07:47:11 -0600 Subject: fix small bug on page metadata parsing --- src/pyssg/md_parser.py | 19 ++++++++++++++++--- src/pyssg/page.py | 10 +++++----- 2 files changed, 21 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/pyssg/md_parser.py b/src/pyssg/md_parser.py index 3b62985..d652da9 100644 --- a/src/pyssg/md_parser.py +++ b/src/pyssg/md_parser.py @@ -1,6 +1,7 @@ import os from operator import itemgetter from logging import Logger, getLogger +from typing import Any from markdown import Markdown from yafg import YafgExtension @@ -14,8 +15,8 @@ log: Logger = getLogger(__name__) # TODO: add configuration testing for extensions config (pymdvar for ex) -def get_md_obj(variables: dict[str, str] = dict(), - enable_env: bool = False) -> Markdown: +def get_md_obj(variables: dict[str, str], + enable_env: bool) -> Markdown: exts: list = ['extra', 'meta', 'sane_lists', @@ -55,7 +56,19 @@ class MDParser: self.config: dict = config self.dir_config: dict = dir_config self.db: Database = db - self.md: Markdown = get_md_obj() + # TODO: actually add extensions support, for now only pymdvar is configured + self.pymdvar_vars: dict[str, str] = dict() + self.pymdvar_enable_env: bool = False + if 'exts' in config and 'pymdvar' in config['exts']: + pymdvar: dict[str, Any] = config['exts']['pymdvar'] + if 'variables' in pymdvar and type(pymdvar['variables']) == dict: + self.pymdvar_vars = pymdvar['variables'] + if 'enable_env' in pymdvar and type(pymdvar['enable_env']) == bool: + self.pymdvar_enable_env = pymdvar['enable_env'] + log.warning('pymdvar_variables: %s', self.pymdvar_vars) + log.warning('pymdvar_enable_env: %s', self.pymdvar_enable_env) + + self.md: Markdown = get_md_obj(self.pymdvar_vars, self.pymdvar_enable_env) self.all_files: list[Page] = [] self.all_tags: list[tuple[str, str]] = [] diff --git a/src/pyssg/page.py b/src/pyssg/page.py index 40eb41a..93eedee 100644 --- a/src/pyssg/page.py +++ b/src/pyssg/page.py @@ -50,7 +50,7 @@ class Page: return self.ctimestamp < other.ctimestamp def __get_meta(self, var: str, - or_else: str | list[str] = '') -> str | list[str] | Any: + or_else: str | list[str] = ['']) -> str | list[str] | Any: if var in self.meta: log.debug('getting metadata "%s"', var) return self.meta[var] @@ -84,10 +84,10 @@ class Page: # parses meta from self.meta def parse_metadata(self): log.debug('parsing metadata for file "%s"', self.name) - self.title = str(self.__get_meta('title')) - self.author = list(self.__get_meta('author', [''])) - self.summary = str(self.__get_meta('summary')) - self.lang = str(self.__get_meta('lang', 'en')) + self.title = str(self.__get_meta('title')[0]) + self.author = list(self.__get_meta('author')) + self.summary = str(self.__get_meta('summary')[0]) + self.lang = str(self.__get_meta('lang', ['en'])[0]) log.debug('parsing timestamp') self.cdatetime = self.from_timestamp(self.ctimestamp) -- cgit v1.2.3-70-g09d2