feat: add internal link parsing
This commit is contained in:
parent
b5954bf529
commit
baeb348f6f
3 changed files with 34 additions and 7 deletions
|
@ -36,3 +36,10 @@ Most modern programming languages are Turing Complete in that they can, in
|
|||
theory, be used to compute anything that is computable.
|
||||
|
||||
What about Universal Turing Machines eh?
|
||||
|
||||
|
||||
Within the [hierarchy of the OS](./Basic_model_of_the_operating_system.md), the
|
||||
kernel acts as the primary mediator between the hardware (CPU, memory) and
|
||||
[user](./User_Space.md) [processes](Processes.md). Let's look at each of its
|
||||
responsibilities in greater depth:
|
||||
|
||||
|
|
|
@ -9,10 +9,11 @@ from services.parse_markdown_service import ParseMarkdownService
|
|||
|
||||
class Entry(TypedDict):
|
||||
title: str
|
||||
tags: List[str]
|
||||
body: str
|
||||
last_modified: str
|
||||
size: int
|
||||
size: str
|
||||
tags: List[str]
|
||||
links: List[str]
|
||||
body: str
|
||||
|
||||
|
||||
class ParseFileService:
|
||||
|
@ -33,5 +34,6 @@ class ParseFileService:
|
|||
),
|
||||
"size": size(self.info.st_size),
|
||||
"tags": markdown_data.get("tags", []),
|
||||
"links": markdown_data.get("links", []),
|
||||
"body": markdown_data.get("body", []),
|
||||
}
|
||||
|
|
|
@ -1,16 +1,34 @@
|
|||
import os
|
||||
import re
|
||||
|
||||
import frontmatter
|
||||
|
||||
|
||||
class ParseMarkdownService:
|
||||
"""Extract tags, links and body text from Markdown entries"""
|
||||
"""Extract tags, internal links and body text from Markdown entries"""
|
||||
|
||||
def __init__(self, eolas_file):
|
||||
self.eolas_file = eolas_file
|
||||
def __init__(self, file):
|
||||
self.file = file
|
||||
|
||||
def __get_internal_links(self):
|
||||
link_rgx = r"\[.*?\]\(([^)]+\.md)\)"
|
||||
with open(self.file, "r") as f:
|
||||
internal_links = []
|
||||
lines = f.readlines()
|
||||
for line in lines:
|
||||
internal_link = re.findall(link_rgx, line)
|
||||
if internal_link:
|
||||
# internal_links.append(internal_link)
|
||||
internal_links.append(
|
||||
[os.path.basename(link) for link in internal_link]
|
||||
)
|
||||
return [item for row in internal_links for item in row]
|
||||
|
||||
def parse(self):
|
||||
with open(self.eolas_file) as f:
|
||||
with open(self.file) as f:
|
||||
metadata, content = frontmatter.parse(f.read())
|
||||
return {
|
||||
"tags": metadata.get("tags", []),
|
||||
"body": content or "",
|
||||
"links": self.__get_internal_links() or [],
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue