1
0
mirror of https://codeberg.org/fediverse/fep.git synced 2026-08-05 03:35:52 +00:00
Files
fep/scripts/fep_tools/__init__.py
T
Helge e4683fbcda Create a FEP static site (#673)
### Preview version

https://helge.codeberg.page/fep/

click there to judge

### Tasks done

- [x] Add a proper index.md instead of final.md .... needs me to filter the readme.md
- [x] search is broken  --> will resolve itself when all feps are part of it
- [x] Update https://codeberg.org/fediverse/fep/src/branch/main/fep/7d8c/fep-7d8c.md
- [x] The admonition format (according to copilot I can blame this format on Microsoft https://learn.microsoft.com/en-us/contribute/content/markdown-reference#alerts-note-important-tip-warning-caution)

    ```
    >[!NOTE]
    >ActivityPub [requires][ActivityPub-Collections] ordered collections to be presented in reverse chronological order. However, an [erratum][ActivityPub-Errata] was proposed to relax this requirement.
    ```
    is not the one supported by python, see https://python-markdown.github.io/extensions/admonition/ . One can probably resolve this by adapting the code https://github.com/Python-Markdown/markdown/blob/f39cf84a24124526c1a0efbe52219fa9950774f6/markdown/extensions/admonition.py

- [x] FEPs miss meta information ....
- [x] Meta information for tracking issue and discussion to link should be formatted
- [x] copy script has problems with contained directories
- [x] add codeberg link to meta, e.g. https://helge.codeberg.page/fep/fep/1b12/
- [x] include implementation counts -> https://codeberg.org/fediverse/fep/issues/686

Co-authored-by: silverpill <silverpill@firemail.cc>
Reviewed-on: https://codeberg.org/fediverse/fep/pulls/673
Reviewed-by: silverpill <silverpill@noreply.codeberg.org>
Co-authored-by: Helge <helge.krueger@gmail.com>
Co-committed-by: Helge <helge.krueger@gmail.com>
2025-11-01 08:40:20 +01:00

65 lines
1.5 KiB
Python

from dataclasses import dataclass
import glob
import hashlib
from .fep_file import FepFile
from .table import table_for_feps
def title_to_slug(title: str):
return hashlib.sha256(title.encode("utf-8")).hexdigest()[:4]
def get_fep_ids():
for fep in glob.glob("fep/*"):
yield fep.removeprefix("fep/")
def index():
fep_files = [FepFile(fep) for fep in get_fep_ids()]
fep_files = sorted(
fep_files,
key=lambda x: (
x.parsed_frontmatter["dateReceived"],
x.parsed_frontmatter["slug"],
),
)
return fep_files
@dataclass
class Readme:
path_prefix: str = "./scripts/snippets"
include_fep_table: bool = True
@property
def content(self):
if self.include_fep_table:
return (
self.snippet("frontmatter_git")
+ self.snippet("frontmatter")
+ self.table
+ self.snippet("backmatter")
)
return self.snippet("frontmatter") + self.snippet("backmatter")
def snippet(self, name: str):
with open(f"{self.path_prefix}/{name}.md") as f:
return f.readlines()
@property
def table(self):
return self.snippet("fep_title") + table_for_feps(index())
def data_for_json_file() -> list[dict[str, str]]:
result = []
for fep in index():
data = fep.parsed_frontmatter
data["title"] = fep.title
data["implementations"] = fep.implementation_count
result.append(data)
return result