Compare commits

...

3 commits

8 changed files with 24 additions and 9 deletions

View file

@ -317,6 +317,7 @@ available:
| `template` | `str \| none` = `none` | Template to use for this page. Relative to `templates/`, `.html` extension optional. |
| `post` | `bool \| none` = `none` | Whether this page is a **post**. `true`/`false` is _absolute_. Leave it unset for automatic detection. |
| `draft` | `bool` = `false` | Whether this page is a draft. See [drafts](#drafts) for more. |
| `ignore` | `bool` = `false` | Whether this page should be ignored in _both_ `final` and `draft` contexts. |
| `math` | `bool` = `true` | Whether the LaTeX extension should be enabled for this page. |
**Note**: you can specify the date in any format that can be parsed by

View file

@ -62,7 +62,7 @@ allowedUntypedLibraries = ["frontmatter", "pygments", "pymdownx", "l2m4m"]
[tool.ruff]
line-length = 70
indent-width = 4
target-version = "py311"
target-version = "py312"
[tool.ruff.lint]
fixable = ["ALL"]

View file

@ -53,7 +53,7 @@ class ZonaBuilder:
):
logger.debug(f"Parsing {path.name}.")
item.metadata, item.content = parse_metadata(path)
if (
if item.metadata.ignore or (
item.metadata.draft
and not self.config.build.include_drafts
):

View file

@ -59,7 +59,9 @@ def build(
"""
if draft:
print("Option override: including drafts.")
builder = ZonaBuilder(cli_root=root, cli_output=output, draft=draft)
builder = ZonaBuilder(
cli_root=root, cli_output=output, draft=draft
)
builder.build()
@ -73,7 +75,9 @@ def serve(
] = None,
host: Annotated[
str,
typer.Option("--host", help="Hostname for live preview server."),
typer.Option(
"--host", help="Hostname for live preview server."
),
] = "localhost",
port: Annotated[
int,

View file

@ -76,7 +76,9 @@ IGNORELIST = [".marksman.toml"]
class ZonaConfig:
base_url: str = "/"
# dictionary where key is name, value is url
sitemap: SitemapConfig = field(default_factory=lambda: {"Home": "/"})
sitemap: SitemapConfig = field(
default_factory=lambda: {"Home": "/"}
)
# list of globs relative to content that should be ignored
ignore: list[str] = field(default_factory=lambda: IGNORELIST)
markdown: MarkdownConfig = field(default_factory=MarkdownConfig)

View file

@ -24,6 +24,7 @@ class Metadata:
template: str | None = None
post: bool | None = None
draft: bool = False
ignore: bool = False
math: bool = True

View file

@ -238,7 +238,9 @@ def serve(
event_handler, path=str(root / "content"), recursive=True
)
observer.schedule(
event_handler, path=str(root / "templates"), recursive=True
event_handler,
path=str(root / "templates"),
recursive=True,
)
observer.start()

View file

@ -19,7 +19,9 @@ def get_resource(path: str) -> ZonaResource:
if file.is_file():
return ZonaResource(name=path, contents=file.read_text())
else:
raise FileNotFoundError(f"{path} is not a valid Zona resource!")
raise FileNotFoundError(
f"{path} is not a valid Zona resource!"
)
def get_resources(subdir: str) -> list[ZonaResource]:
@ -75,10 +77,13 @@ def normalize_url(url: str) -> str:
return url
def should_ignore(path: Path, patterns: list[str], base: Path) -> bool:
def should_ignore(
path: Path, patterns: list[str], base: Path
) -> bool:
rel_path = path.relative_to(base)
return any(
fnmatch.fnmatch(str(rel_path), pattern) for pattern in patterns
fnmatch.fnmatch(str(rel_path), pattern)
for pattern in patterns
)