diff options
Diffstat (limited to 'src/pyssg/parser.py')
-rw-r--r-- | src/pyssg/parser.py | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/src/pyssg/parser.py b/src/pyssg/parser.py deleted file mode 100644 index 2888fcb..0000000 --- a/src/pyssg/parser.py +++ /dev/null @@ -1,79 +0,0 @@ -import os -from operator import itemgetter -from markdown import Markdown -from configparser import ConfigParser - -from .database import Database -from .page import Page - - -# parser of md files, stores list of pages and tags -class MDParser: - def __init__(self, files: list[str], - config: ConfigParser, - db: Database, - md: Markdown): - self.files: list[str] = files - - self.config: ConfigParser = config - self.db: Database = db - self.md: Markdown = md - - self.all_pages: list[Page] = None - self.updated_pages: list[Page] = None - self.all_tags: list[tuple[str]] = None - - - def parse(self) -> None: - # initialize lists - self.all_pages = [] - self.updated_pages = [] - self.all_tags = [] - # not used, not sure why i had this - # all_tag_names: list[str] = [] - - for f in self.files: - src_file: str = os.path.join(self.config.get('path', 'src'), f) - # get flag if update is successful - updated: bool = self.db.update(src_file, remove=f'{self.config.get("path", "src")}/') - - content: str = self.md.reset().convert(open(src_file).read()) - page: Page = Page(f, - self.db.e[f][0], - self.db.e[f][1], - content, - self.md.Meta, - self.config) - page.parse() - - # keep a separated list for all and updated pages - if updated: - self.updated_pages.append(page) - self.all_pages.append(page) - - # parse tags - if page.tags is not None: - # add its tag to corresponding db entry if existent - self.db.update_tags(f, list(map(itemgetter(0), page.tags))) - - # update all_tags attribute - for t in page.tags: - if t[0] not in list(map(itemgetter(0), self.all_tags)): - self.all_tags.append(t) - - # sort list of tags for consistency - self.all_tags.sort(key=itemgetter(0)) - self.updated_pages.sort(reverse=True) - self.all_pages.sort(reverse=True) - - pages_amount: int = len(self.all_pages) - # note that prev and next are switched because of the reverse rodering - # of all_pages - for i, p in enumerate(self.all_pages): - if i != 0: - next_page: Page = self.all_pages[i - 1] - p.next = next_page - - if i != pages_amount - 1: - prev_page: Page = self.all_pages[i + 1] - p.previous = prev_page |