Skip to content

Commit

Permalink
refactor(location): breaking-change:Change "url" to "location"
Browse files Browse the repository at this point in the history
  • Loading branch information
herberton committed Sep 23, 2021
1 parent 3269810 commit 6be523c
Show file tree
Hide file tree
Showing 8 changed files with 53 additions and 29 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Just follow the steps:

```
...
mkdocs-expose-page-metadata==0.1.3
mkdocs-expose-page-metadata==1.1.3
```
Expand Down Expand Up @@ -84,7 +84,7 @@ Just follow the steps:
"other-metadata": "bla"
},
"title": "Lorem Ipsum",
"url": "/lorem-ipsum"
"location": "/lorem-ipsum"
},
{
"meta" : {
Expand All @@ -95,7 +95,7 @@ Just follow the steps:
]
},
"title": "Lorem Ipsum 2",
"url": "/lorem-ipsum/#lorem-ipsum-2"
"location": "/lorem-ipsum/#lorem-ipsum-2"
},
{
"meta" : {
Expand All @@ -105,7 +105,7 @@ Just follow the steps:
]
},
"title": "Lorem Ipsum 2-1",
"url": "/lorem-ipsum/#lorem-ipsum-2-1"
"location": "/lorem-ipsum/#lorem-ipsum-2-1"
}
]
```
10 changes: 5 additions & 5 deletions mkdocs_expose_page_metadata/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ def find_toc_by_id(toc, _id):
if toc_item_r is not None:
return toc_item_r

def get_subtitle_url_from(page: Page, parser: ContentParser, subtitle: str):
def get_location_from(page: Page, parser: ContentParser, subtitle: str):

_subtitle = string_remove(text=subtitle, old="#", strip=True)

Expand All @@ -33,10 +33,10 @@ def string_replace(text: str, old: str, new:str="", count: int=-1, strip: bool=F
return result.strip() if strip else result

def create_parser_from(page: Page):
_PARSER = ContentParser()
_PARSER.feed(page.content)
_PARSER.close()
return _PARSER
parser = ContentParser()
parser.feed(page.content)
parser.close()
return parser

def to_json(object):
return json.dumps(object, default=lambda o: o.__dict__, separators=(',', ':'), sort_keys=True)
Expand Down
9 changes: 8 additions & 1 deletion mkdocs_expose_page_metadata/metadata.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
from typing import Tuple
from mkdocs_expose_page_metadata.helpers import string_remove, dict_merge, dict_merge_value

class Metadata:

# PROPERTIES

@property
def content(self) -> dict:
return self._CONTENT

# CONSTRUCTOR

def __init__(self, content: dict=None, annotations: list[str]=[]):
self._CONTENT = dict_merge(content, self._extract_content_from(annotations))

# METHODS

def _extract_content_from(self, annotations: list[str]) -> dict:
content = {}
for annotation in annotations:
Expand All @@ -17,7 +24,7 @@ def _extract_content_from(self, annotations: list[str]) -> dict:
content[key] = dict_merge_value(content, key, value)
return content

def _extract_entry_from(self, annotation: str) -> (str, str):
def _extract_entry_from(self, annotation: str) -> Tuple[str, str]:

# [meta]:<key> (value)
if annotation.startswith("[meta]:"):
Expand Down
21 changes: 13 additions & 8 deletions mkdocs_expose_page_metadata/metadata_page.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,39 @@

class MetadataPage:

# CONSTANTS

PATH = "metadata"
NAME = "metadata.json"
ENCODE = "utf-8"

# CONSTRUCTOR

def __init__(self, path: str, name: str, encode: str):
self._PATH = path if path else self.PATH
self._NAME = name if name else self.NAME
self._ENCODE = encode if encode else self.ENCODE
self._CONTENT = list[MetadataPageEntry]()

# METHODS

def append_content_from(self, page: Page):

if page.meta:
entry = MetadataPageEntry(title=page.title, url=page.url, meta=page.meta)
entry = MetadataPageEntry(title=page.title, location=page.url, meta=page.meta)
self._CONTENT.append(entry)

parser = MetadataParser(page)

for entry in parser.entries:
if (not entry.url):
raise Exception(f"URL not found for subtitle \"{_SUBTITLE}\" on page \"{page.title}\"")
if (not entry.location):
raise Exception(f"Location not found for subtitle \"{entry.title}\" on page \"{page.title}\"")
self._CONTENT.append(entry)


def save(self):
_ENDPOINT = os.path.join(self._PATH, self._NAME)
_CONTENT = self.__str__()
utils.write_file(_CONTENT.encode(self._ENCODE), _ENDPOINT)

endpoint = os.path.join(self._PATH, self._NAME)
content = self.__str__()
utils.write_file(content.encode(self._ENCODE), endpoint)
def __repr__(self) -> str:
return to_json([entry.to_dict() for entry in self._CONTENT])
16 changes: 11 additions & 5 deletions mkdocs_expose_page_metadata/metadata_page_entry.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,32 @@

class MetadataPageEntry:

# PROPERTIES

@property
def title(self) -> str:
return self._TITLE

@property
def url(self) -> str:
return self._URL
def location(self) -> str:
return self._LOCATION

@property
def meta(self) -> Metadata:
return self._META

def __init__(self, title: str, url: str, meta: dict=None, annotations: list[str] = []):
# CONSTRUCTOR

def __init__(self, title: str, location: str, meta: dict=None, annotations: list[str] = []):
self._TITLE = title
self._URL = url
self._LOCATION = location
self._META = Metadata(content=meta, annotations=annotations)

# METHODS

def to_dict(self):
return {
'title': self.title,
'url': self.url,
'location': self.location,
'meta': self.meta.content
}
12 changes: 9 additions & 3 deletions mkdocs_expose_page_metadata/metadata_parser.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,25 @@
import re

from mkdocs.structure.pages import Page
from mkdocs_expose_page_metadata.helpers import create_parser_from, get_subtitle_url_from, string_remove
from mkdocs_expose_page_metadata.helpers import create_parser_from, get_location_from, string_remove
from mkdocs_expose_page_metadata.metadata_page_entry import MetadataPageEntry

class MetadataParser:

# CONSTANTS

_PAGE_MARKDOWN_REGEX = re.compile(r"(#+\s*.*\s*(\[.*\]:<.*>\s*\(.*\)\s*)+)")
_PAGE_SUBTITLE_REGEX = re.compile(r"(#+\s*.*)")
_PAGE_ANNOTATIONS_REGEX = re.compile(r"(\[.*\]:<.*>\s*\(.*\)\s*)")

# PROPERTIES

@property
def entries(self) -> list[MetadataPageEntry]:
return self._ENTRIES

# CONSTRUCTOR

def __init__(self, page: Page):

self._ENTRIES = []
Expand All @@ -26,8 +32,8 @@ def __init__(self, page: Page):
text = match.group(0)

subtitle = string_remove(text=self._PAGE_SUBTITLE_REGEX.search(text).group(0), old="#", strip=True)
url = get_subtitle_url_from(page=page, parser=parser, subtitle=subtitle)
location = get_location_from(page=page, parser=parser, subtitle=subtitle)
annotations = [annotation.group(0).strip() for annotation in self._PAGE_ANNOTATIONS_REGEX.finditer(text)]

self._ENTRIES.append(MetadataPageEntry(title=subtitle, url=url, annotations=annotations))
self._ENTRIES.append(MetadataPageEntry(title=subtitle, location=location, annotations=annotations))

4 changes: 2 additions & 2 deletions mkdocs_expose_page_metadata/plugin.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ def on_pre_build(self, config):

def on_page_context(self, context, **kwargs):
"Metadata Page Creation"
_PAGE = context['page']
self.metadata.append_content_from(_PAGE)
page = context['page']
self.metadata.append_content_from(page)

def on_post_build(self, config, **kwargs):
"Metadata Page Building"
Expand Down
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

setup(
name='mkdocs-expose-page-metadata',
version='0.1.3',
version='1.1.3',
description='This plug-in exposing all pages metadata in a single path!',
long_description='See https://github.com/herberton/mkdocs-expose-page-metadata for more details.',
keywords='mkdocs metadata',
Expand Down

0 comments on commit 6be523c

Please sign in to comment.