summaryrefslogtreecommitdiff
path: root/src/pyssg/parser.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/pyssg/parser.py')
-rw-r--r--src/pyssg/parser.py79
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