scriptorium/README.md

66 lines
1.8 KiB
Markdown
Raw Normal View History

2024-04-20 08:25:02 +00:00
# gloss
2024-04-04 11:42:55 +00:00
2024-04-20 08:25:02 +00:00
Gloss is a simple blog generator for Gleam, using [Lustre](https://hexdocs.pm/lustre) and
[lustre_ssg](https://hexdocs.pm/lustre_ssg).
2024-04-04 11:42:55 +00:00
2024-04-20 08:25:02 +00:00
Gloss runs on the JavaScript target and it's tested with Node.js.
<!-- [![Package Version](https://img.shields.io/hexpm/v/gloss)](https://hex.pm/packages/gloss) -->
<!-- [![Hex Docs](https://img.shields.io/badge/hex-docs-ffaff3)](https://hexdocs.pm/gloss/) -->
## Quickstart
Gloss is not yet available on Hex. You can use it with a path dependency instead. Create a new
2024-04-20 08:34:11 +00:00
Gleam project, clone Gloss to some path, and add the following to `gleam.toml`:
2024-04-20 08:25:02 +00:00
```toml
[dependencies]
gleam_stdlib = "~> 0.36 or ~> 1.0"
gloss = { path = "../path/to/gloss" }
2024-04-04 11:42:55 +00:00
```
2024-04-20 08:25:02 +00:00
To generate a default blog, use the following in your main file:
2024-04-04 11:42:55 +00:00
```gleam
2024-04-20 08:25:02 +00:00
import gleam/result
import gleam/option
import gleam/io
import gloss/builder
import gloss/config.{type Configuration, Configuration}
import gloss/defaults
2024-04-04 11:42:55 +00:00
pub fn main() {
2024-04-20 08:25:02 +00:00
let config =
defaults.default_config(
"My Blog",
"https://my.blog.example/",
"en",
config.Author(
"Person McPerson",
option.Some("person@example.com"),
option.Some("https://fedi.instance.example/@person"),
),
"© Person McPerson",
)
io.debug(build(config))
2024-04-04 11:42:55 +00:00
}
2024-04-20 08:25:02 +00:00
pub fn build(config: Configuration) {
// Parse the files
use db <- result.try(builder.parse(config))
// Compile Markdown into HTML
let compiled = builder.compile(db, config)
// Render content into Lustre elements
let rendered = builder.render(db, compiled, config)
// Write rendered content into the filesystem
builder.write(rendered, config)
}
```
2024-04-04 11:42:55 +00:00
2024-04-20 08:25:02 +00:00
## Documentation
2024-04-04 11:42:55 +00:00
2024-04-20 08:25:02 +00:00
- [Gloss Demo Blog](https://nicd.gitlab.io/gloss_blog)
- [User's Guide](https://nicd.gitlab.io/gloss_blog/guide.html)
- [Gloss API reference](https://nicd.gitlab.io/gloss)