-
Notifications
You must be signed in to change notification settings - Fork 8
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
fix: refactor gnoblog-cli #63
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
some nitpicks; overall looks good 👍
## Description This PR adds two new AVL trees that enable sorting of the blog posts by publication date and title. This approach utilizes the fact that the AVL tree iteration order is lexicographic by key. We introduce two new AVL trees into the `Blog` struct - which store a key to sort by (title or publication date), and store the pointers to posts, meaning the memory overhead is small. This PR also modifies the rendering of the blog: Old blog home page: ![Screenshot 2024-01-23 at 11 34 10](https://github.com/gnolang/gno/assets/33522493/78e197d3-a477-49a9-88d8-06b4f2c3d51d) New blog home page (sorted newest-top-left): ![Screenshot 2024-01-23 at 11 33 38](https://github.com/gnolang/gno/assets/33522493/16712e37-c971-4cf5-9962-9dbf639a6088) Old post rendering - header & footer: ![Screenshot 2024-01-23 at 11 34 46](https://github.com/gnolang/gno/assets/33522493/d6a713bb-379c-44b7-9ea7-38997e6b5c5a) New post rendering - header & footer: ![Screenshot 2024-01-23 at 11 35 03](https://github.com/gnolang/gno/assets/33522493/352ea40d-c9ac-41a0-a362-fb3c5ca62968) ---- ![Screenshot 2024-01-23 at 11 35 11](https://github.com/gnolang/gno/assets/33522493/6f21416c-8945-4eca-9bee-b67a9e56a568) The API changes are the following: - Each post now stores the publisher (ie caller of ModAddPost), and the authors. - It is envisioned that the author list will be a list of GitHub usernames, while the publisher is simply the address of the caller. A PR in the Blog repo will be added to accommodate this change. - If the author list in the frontmatter of the blog post is empty, just the publisher will be displayed - The timestamp for when the blog was written will primarily be taken in from the outside world, ie from the frontmatter, in the `RFC3339` format. This timestamp allows us to still keep the ordering of the blogs even when the block height/timestamp is unreliable. In case the timestamps are not provided, time.Now() in the realm will be used instead. Publishing flow - two options: - Pass in data directly to the blog realm via `ModAddPost`, - Use the `gnoblog-cli` or similar parsing & publishing tool. Either way, it is expected that any timestamps passed will be used in the `time.RFC3339` format. This PR is being published in pair with a [refactor](gnolang/blog#63) of the gnoblog-cli tool. Related: gnolang/blog#20 <details><summary>Contributors' checklist...</summary> - [ ] Added new tests, or not needed, or not feasible - [ ] Provided an example (e.g. screenshot) to aid review or the PR is self-explanatory - [ ] Updated the official documentation or not needed - [ ] No breaking changes were made, or a `BREAKING CHANGE: xxx` message was included in the description - [ ] Added references to related issues and PRs - [ ] Provided any useful hints for running manual tests - [ ] Added new benchmarks to [generated graphs](https://gnoland.github.io/benchmarks), if any. More info [here](https://github.com/gnolang/gno/blob/master/.benchmarks/README.md). </details> --------- Co-authored-by: Manfred Touron <[email protected]>
Merging this without writing integration tests because there is no straight-forward way to do so currently. Next steps: iterate CI integration to |
Description
This PR refactors the
gnoblog-cli
tool. It introduces single & batch posting.Related to #62, #56.
The PR also includes the changes for Issue #56, which is removing the post titles from the frontmatter and extracting them directly from the body.
Closes: #60, #62, #56