Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add list_pages/3 function #20

Merged
merged 3 commits into from
Mar 9, 2025
Merged

Add list_pages/3 function #20

merged 3 commits into from
Mar 9, 2025

Conversation

goncalotomas
Copy link
Contributor

Previously, Collections were the only way of listing pages, which is required for building index pages. Looking after the source code after a while made me realize that I really value simplicity, and Collections were too much logic in a single mechanism, especially for simple use cases.

The question raised in #12 is pertinent: it shouldn't be that complicated to list pages, so these changes add a function that allows listing pages with a simple filter and sort option.

How it works

Griffin works in two stages: parsing, where files are read and split into a {frontmatter, content} pair, and rendering, which is when files are written to the output directory. This logic has been extended a bit to also store the path the file comes from relative to the root directory, so that it is searchable.

The frontmatter/metadata is really all that's needed for listing pages, so we're now storing the parsed file metadata in ETS.

In the rendering stage, we now inject a @list_pages assign as a function wrapping GriffinSSG.list_pages/3 which enables listing pages from layouts.

@goncalotomas goncalotomas self-assigned this Mar 9, 2025
@goncalotomas goncalotomas merged commit e36939d into main Mar 9, 2025
1 check passed
@goncalotomas goncalotomas deleted the list-pages-function branch March 9, 2025 21:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant