Bump to Gleam 1.1.0

This commit is contained in:
Mikko Ahlroth 2024-04-20 11:28:10 +03:00
parent b7a910a2f6
commit e01ddec336
28 changed files with 113 additions and 112 deletions

View file

@ -1,2 +1,2 @@
gleam 1.0.0
gleam 1.1.0
nodejs 20.10.0

View file

@ -1,6 +1,7 @@
name = "gloss"
version = "1.0.0"
target = "javascript"
gleam = "~> 1.1"
# Fill out these fields if you intend to generate HTML documentation or publish
# your project to the Hex package manager.

View file

@ -2,10 +2,10 @@
//// parts of gloss, using the configuration to control what is done.
import gleam/result
import gloss/rendering/database as render_database
import gloss/compiler.{type CompileDatabase}
import gloss/config.{type Configuration}
import gloss/models/database.{type Database}
import gloss/compiler.{type CompileDatabase}
import gloss/rendering/database as render_database
/// Something failed when building the blog.
pub type BuildError {

View file

@ -1,14 +1,14 @@
//// Compiling means turning post and page content into HTML. By default this
//// content is Markdown that is compiled with Marked.js.
import gleam/option
import gleam/dict.{type Dict}
import gleam/list
import gloss/utils/ordered_tree
import gloss/models/post.{type Post}
import gloss/models/page.{type Page}
import gleam/option
import gloss/models/database.{type Database, type PostID}
import gloss/models/page.{type Page}
import gloss/models/post.{type Post}
import gloss/utils/marked
import gloss/utils/ordered_tree
/// Compiled post content: strings that contain HTML.
pub type PostContent {

View file

@ -1,14 +1,14 @@
//// The configuration is the main way to customize Gloss's behaviour.
import gleam/option
import gloss/compiler.{type CompileDatabase, type Compiler}
import gloss/models/database.{type Database}
import gloss/paths.{type PathConfiguration}
import gloss/rendering/database.{type RenderDatabase} as _
import gloss/rendering/views.{
type BaseView, type FeedView, type ListPageView, type MetaView, type PageView,
type SinglePostView,
}
import gloss/compiler.{type CompileDatabase, type Compiler}
import gloss/models/database.{type Database}
import gloss/rendering/database.{type RenderDatabase} as _
/// An error occurred when writing the rendered results into files.
pub type WriteError {

View file

@ -2,18 +2,18 @@
//// blog quickly.
import gleam/uri
import gloss/config.{type Configuration, Compiling, Configuration, Rendering}
import gloss/rendering/views/single_post
import gloss/rendering/views/base
import gloss/rendering/views/list_page
import gloss/rendering/views/page
import gloss/rendering/views/feed
import gloss/rendering/views/meta
import gloss/renderer
import gloss/paths
import gloss/parser
import gloss/writer
import gloss/compiler
import gloss/config.{type Configuration, Compiling, Configuration, Rendering}
import gloss/parser
import gloss/paths
import gloss/renderer
import gloss/rendering/views/base
import gloss/rendering/views/feed
import gloss/rendering/views/list_page
import gloss/rendering/views/meta
import gloss/rendering/views/page
import gloss/rendering/views/single_post
import gloss/writer
/// View generators that use the Gloss builtin views.
const default_views = config.Views(

View file

@ -5,9 +5,9 @@ import gleam/dict.{type Dict}
import gleam/list
import gleam/option.{None, Some}
import gleam/order.{type Order}
import gloss/models/post.{type Post, type Tag}
import gloss/models/page.{type Page}
import gloss/models/menu.{type MenuItem}
import gloss/models/page.{type Page}
import gloss/models/post.{type Post, type Tag}
import gloss/utils/date.{type Month}
import gloss/utils/ordered_tree.{type OrderedTree}
import gloss/utils/uniqid.{type Generator, type UniqID}

View file

@ -3,10 +3,10 @@
import gleam/int
import gleam/option.{type Option}
import gleam/order.{type Order, Eq}
import gloss/utils/date.{type Date}
import gloss/utils/time.{type Time, Time}
import gloss/utils/luxon.{type DateTime}
import gloss/models/header.{type Header}
import gloss/utils/date.{type Date}
import gloss/utils/luxon.{type DateTime}
import gloss/utils/time.{type Time, Time}
pub type PostedAt {
/// The post only had date information.

View file

@ -1,16 +1,16 @@
//// Parsing reads the input files into the database.
import gleam/result
import gleam/list
import gleam/regex
import gleam/result
import gleam/string
import simplifile
import gloss/config.{type ParseError, ParseError}
import gloss/models/database.{type Database}
import gloss/parser/common
import gloss/parser/post
import gloss/parser/page
import gloss/parser/menu
import gloss/config.{type ParseError, ParseError}
import gloss/parser/page
import gloss/parser/post
import simplifile
/// The default path where input files are read from.
const default_data_path = "./data"

View file

@ -1,7 +1,7 @@
import gleam/bool
import gleam/list
import gleam/result
import gleam/string
import gleam/list
import gleam/bool
import gloss/models/header.{type Header}
/// The default file extension for source files.

View file

@ -1,6 +1,6 @@
import gleam/list
import gleam/string
import gleam/result
import gleam/string
import gloss/models/menu.{MenuItem}
/// Parse the content and return menu items.

View file

@ -1,6 +1,6 @@
import gleam/string
import gleam/result
import gleam/list
import gleam/result
import gleam/string
import gloss/models/page.{type Page, Page}
import gloss/parser/common.{type ParseError, EmptyFile, HeaderMissing, try}

View file

@ -1,20 +1,20 @@
import gleam/string
import gleam/result
import gleam/bool
import gleam/int
import gleam/list
import gleam/option
import gleam/int
import gleam/bool
import gleam/regex
import gleam/result
import gleam/string
import gloss/models/header.{type Header}
import gloss/models/post.{type Post, type PostedAt, type Tag, Post}
import gloss/utils/date.{Date}
import gloss/utils/time.{type Time, Time}
import gloss/utils/ints/day
import gloss/utils/luxon
import gloss/parser/common.{
type ParseError, DayNotInt, EmptyFile, HeaderMissing, InvalidDate,
MalformedFilename, MalformedHeader, MonthNotInt, YearNotInt, try,
}
import gloss/utils/date.{Date}
import gloss/utils/ints/day
import gloss/utils/luxon
import gloss/utils/time.{type Time, Time}
/// Post filenames must match this regex.
pub const filename_regex = "^\\d{4}-\\d\\d-\\d\\d-.*\\.md$"

View file

@ -2,10 +2,10 @@
//// formed.
import gleam/int
import gleam/string
import gleam/list
import gloss/models/post.{type Post}
import gleam/string
import gloss/models/page.{type Page}
import gloss/models/post.{type Post}
import gloss/utils/date.{type Month}
import gloss/utils/ints/day

View file

@ -1,26 +1,26 @@
//// The renderer's job is to render compiled content into HTML. By default this
//// means Lustre elements that can be later stringified.
import gleam/list
import gleam/dict.{type Dict}
import gleam/result
import gleam/int
import lustre/element.{type Element}
import gloss/rendering/views.{
type BaseView, type FeedView, type ListPageView, type MetaView, type PageView,
type SinglePostView, ListInfo,
import gleam/list
import gleam/result
import gloss/compiler.{
type CompileDatabase, type CompiledPage, type CompiledPost,
}
import gloss/config.{type Configuration}
import gloss/models/database.{type Database, type PostID, type PostWithID}
import gloss/rendering/database.{
type RenderDatabase, type RenderedSinglePost, ListPage, RenderDatabase,
RenderedPage, RenderedSinglePost,
} as _
import gloss/compiler.{
type CompileDatabase, type CompiledPage, type CompiledPost,
import gloss/rendering/views.{
type BaseView, type FeedView, type ListPageView, type MetaView, type PageView,
type SinglePostView, ListInfo,
}
import gloss/models/database.{type Database, type PostID, type PostWithID}
import gloss/utils/ordered_tree
import gloss/config.{type Configuration}
import gloss/utils/date
import gloss/utils/ordered_tree
import lustre/element.{type Element}
/// Helper struct to pass all the used views to the rendering functions.
pub type Views {

View file

@ -1,10 +1,10 @@
//// The render database stores the rendered posts and pages.
import gleam/dict.{type Dict}
import lustre/element.{type Element}
import gloss/models/post.{type Post}
import gloss/models/page.{type Page}
import gloss/models/post.{type Post}
import gloss/utils/date.{type Month}
import lustre/element.{type Element}
/// A post and its rendered content.
pub type RenderedSinglePost {

View file

@ -1,7 +1,7 @@
import lustre/element.{type Element}
import gloss/compiler.{type CompiledPage, type CompiledPost}
import gloss/models/post
import gloss/models/page
import gloss/models/post
import lustre/element.{type Element}
/// The base view renders the base page layout.
///

View file

@ -1,20 +1,20 @@
import gleam/dict
import gleam/list
import gleam/int
import gleam/float
import gleam/string
import gleam/int
import gleam/list
import gleam/option
import gleam/string
import gloss/config.{type Configuration}
import gloss/models/database.{type Database}
import gloss/models/menu.{type MenuItem}
import gloss/utils/date
import gloss/utils/ordered_tree
import lustre/attribute.{attribute, href, id, name, rel, role, style, type_}
import lustre/element.{type Element, text}
import lustre/element/html.{
a, body, footer, h1, head, header, html, li, link, main, meta, nav, p, section,
title, ul,
}
import lustre/attribute.{attribute, href, id, name, rel, role, style, type_}
import gloss/models/database.{type Database}
import gloss/models/menu.{type MenuItem}
import gloss/utils/ordered_tree
import gloss/utils/date
import gloss/config.{type Configuration}
const tag_min_size = 0.5

View file

@ -1,16 +1,16 @@
import gleam/list
import gleam/option
import lustre/element
import gloss/compiler.{type CompiledPost}
import gloss/config.{type Configuration}
import gloss/models/database.{type Database}
import gloss/models/post
import gloss/utils/luxon
import lustre/attribute.{attribute}
import lustre/element
import lustre/ssg/atom.{
author, content, email, entry, feed, generator, id, link, name, rights,
summary, title, updated, uri,
}
import gloss/models/database.{type Database}
import gloss/models/post
import gloss/config.{type Configuration}
import gloss/compiler.{type CompiledPost}
import gloss/utils/luxon
pub fn generate(_db: Database, config: Configuration) {
fn(posts: List(CompiledPost)) {

View file

@ -1,11 +1,11 @@
import gleam/list
import lustre/element
import lustre/element/html.{footer, nav}
import lustre/attribute.{attribute, class}
import gloss/config.{type Configuration}
import gloss/models/database.{type Database}
import gloss/rendering/views.{type ListInfo}
import gloss/rendering/views/nav
import gloss/config.{type Configuration}
import lustre/attribute.{attribute, class}
import lustre/element
import lustre/element/html.{footer, nav}
pub fn generate(db: Database, config: Configuration) {
let single_post_renderer = config.rendering.views.single_post_list(db, config)

View file

@ -2,13 +2,13 @@ import gleam/dict
import gleam/list
import gleam/option
import gleam/result
import lustre/element/html
import lustre/attribute
import gloss/rendering/views.{type PageType, Other, Page, Post}
import gloss/models/post
import gloss/models/page
import gloss/config.{type Configuration}
import gloss/models/database.{type Database}
import gloss/models/page
import gloss/models/post
import gloss/rendering/views.{type PageType, Other, Page, Post}
import lustre/attribute
import lustre/element/html
pub fn generate(_db: Database, config: Configuration) {
fn(page_type: PageType) {

View file

@ -1,10 +1,10 @@
import gleam/list
import gleam/int
import lustre/element/html.{a, li, span, ul}
import lustre/element.{text}
import lustre/attribute.{attribute, href}
import gloss/rendering/views.{type ListInfo}
import gleam/list
import gloss/config.{type Configuration}
import gloss/rendering/views.{type ListInfo}
import lustre/attribute.{attribute, href}
import lustre/element.{text}
import lustre/element/html.{a, li, span, ul}
pub fn view(list_info: ListInfo, root_path: String, config: Configuration) {
let page_range = list.range(1, list_info.total_pages)

View file

@ -1,9 +1,9 @@
import lustre/element/html.{article, div, h2, header}
import lustre/element.{text}
import lustre/attribute.{attribute, class}
import gloss/models/database.{type Database}
import gloss/compiler.{type CompiledPage}
import gloss/config.{type Configuration}
import gloss/models/database.{type Database}
import lustre/attribute.{attribute, class}
import lustre/element.{text}
import lustre/element/html.{article, div, h2, header}
pub fn generate(db: Database, config: Configuration) {
view(_, db, config)

View file

@ -1,17 +1,17 @@
import gleam/option
import gleam/list
import gleam/option
import gloss/compiler.{type CompiledPost}
import gloss/config.{type Configuration}
import gloss/models/database.{type Database}
import gloss/models/post.{type Post}
import gloss/utils/date
import gloss/utils/luxon
import gloss/utils/time
import lustre/attribute.{attribute, class, href}
import lustre/element.{type Element, text}
import lustre/element/html.{
a, article, div, footer, h2, header, li, nav, p, time, ul,
}
import lustre/element.{type Element, text}
import lustre/attribute.{attribute, class, href}
import gloss/models/database.{type Database}
import gloss/models/post.{type Post}
import gloss/compiler.{type CompiledPost}
import gloss/config.{type Configuration}
import gloss/utils/date
import gloss/utils/time
import gloss/utils/luxon
/// Generate a view that renders a full post.
pub fn full_view(db: Database, config: Configuration) {

View file

@ -1,6 +1,6 @@
import gleam/bool
import gleam/order.{type Order, Eq}
import gleam/int
import gleam/order.{type Order, Eq}
import gleam/string
import gloss/utils/ints/day.{type Day}

View file

@ -1,5 +1,5 @@
import gleam/order.{type Order, Eq}
import gleam/int
import gleam/order.{type Order, Eq}
import gleam/string
import gloss/utils/ints/hour.{type Hour}
import gloss/utils/ints/minute.{type Minute}

View file

@ -1,15 +1,15 @@
//// The writer takes rendered content and writes it into the filesystem.
import gleam/list
import gleam/dict
import gleam/list
import gleam/result
import gleam/string
import gloss/config.{type Configuration, WriteError}
import gloss/rendering/database.{type RenderDatabase} as _
import gloss/utils/priv
import lustre/element
import lustre/ssg
import lustre/ssg/xml
import lustre/element
import gloss/rendering/database.{type RenderDatabase} as _
import gloss/config.{type Configuration, WriteError}
import gloss/utils/priv
/// Write the rendered content into the filesystem using lustre_ssg.
pub fn write(db: RenderDatabase, config: Configuration) {

View file

@ -1,7 +1,7 @@
//// Bindings for Atom feed elements.
import lustre/element.{type Element, advanced, element, namespaced, text}
import lustre/attribute.{attribute}
import lustre/element.{type Element, advanced, element, namespaced, text}
pub fn feed(children: List(Element(a))) {
element("feed", [attribute("xmlns", "http://www.w3.org/2005/Atom")], children)