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 nodejs 20.10.0

View file

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

View file

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

View file

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

View file

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

View file

@ -2,18 +2,18 @@
//// blog quickly. //// blog quickly.
import gleam/uri 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/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. /// View generators that use the Gloss builtin views.
const default_views = config.Views( const default_views = config.Views(

View file

@ -5,9 +5,9 @@ import gleam/dict.{type Dict}
import gleam/list import gleam/list
import gleam/option.{None, Some} import gleam/option.{None, Some}
import gleam/order.{type Order} 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/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/date.{type Month}
import gloss/utils/ordered_tree.{type OrderedTree} import gloss/utils/ordered_tree.{type OrderedTree}
import gloss/utils/uniqid.{type Generator, type UniqID} import gloss/utils/uniqid.{type Generator, type UniqID}

View file

@ -3,10 +3,10 @@
import gleam/int import gleam/int
import gleam/option.{type Option} import gleam/option.{type Option}
import gleam/order.{type Order, Eq} 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/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 { pub type PostedAt {
/// The post only had date information. /// The post only had date information.

View file

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

View file

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

View file

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

View file

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

View file

@ -1,20 +1,20 @@
import gleam/string import gleam/bool
import gleam/result import gleam/int
import gleam/list import gleam/list
import gleam/option import gleam/option
import gleam/int
import gleam/bool
import gleam/regex import gleam/regex
import gleam/result
import gleam/string
import gloss/models/header.{type Header} import gloss/models/header.{type Header}
import gloss/models/post.{type Post, type PostedAt, type Tag, Post} 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.{ import gloss/parser/common.{
type ParseError, DayNotInt, EmptyFile, HeaderMissing, InvalidDate, type ParseError, DayNotInt, EmptyFile, HeaderMissing, InvalidDate,
MalformedFilename, MalformedHeader, MonthNotInt, YearNotInt, try, 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. /// Post filenames must match this regex.
pub const filename_regex = "^\\d{4}-\\d\\d-\\d\\d-.*\\.md$" pub const filename_regex = "^\\d{4}-\\d\\d-\\d\\d-.*\\.md$"

View file

@ -2,10 +2,10 @@
//// formed. //// formed.
import gleam/int import gleam/int
import gleam/string
import gleam/list import gleam/list
import gloss/models/post.{type Post} import gleam/string
import gloss/models/page.{type Page} import gloss/models/page.{type Page}
import gloss/models/post.{type Post}
import gloss/utils/date.{type Month} import gloss/utils/date.{type Month}
import gloss/utils/ints/day 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 //// The renderer's job is to render compiled content into HTML. By default this
//// means Lustre elements that can be later stringified. //// means Lustre elements that can be later stringified.
import gleam/list
import gleam/dict.{type Dict} import gleam/dict.{type Dict}
import gleam/result
import gleam/int import gleam/int
import lustre/element.{type Element} import gleam/list
import gloss/rendering/views.{ import gleam/result
type BaseView, type FeedView, type ListPageView, type MetaView, type PageView, import gloss/compiler.{
type SinglePostView, ListInfo, 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.{ import gloss/rendering/database.{
type RenderDatabase, type RenderedSinglePost, ListPage, RenderDatabase, type RenderDatabase, type RenderedSinglePost, ListPage, RenderDatabase,
RenderedPage, RenderedSinglePost, RenderedPage, RenderedSinglePost,
} as _ } as _
import gloss/compiler.{ import gloss/rendering/views.{
type CompileDatabase, type CompiledPage, type CompiledPost, 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/date
import gloss/utils/ordered_tree
import lustre/element.{type Element}
/// Helper struct to pass all the used views to the rendering functions. /// Helper struct to pass all the used views to the rendering functions.
pub type Views { pub type Views {

View file

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

View file

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

View file

@ -1,20 +1,20 @@
import gleam/dict import gleam/dict
import gleam/list
import gleam/int
import gleam/float import gleam/float
import gleam/string import gleam/int
import gleam/list
import gleam/option 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.{type Element, text}
import lustre/element/html.{ import lustre/element/html.{
a, body, footer, h1, head, header, html, li, link, main, meta, nav, p, section, a, body, footer, h1, head, header, html, li, link, main, meta, nav, p, section,
title, ul, 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 const tag_min_size = 0.5

View file

@ -1,16 +1,16 @@
import gleam/list import gleam/list
import gleam/option 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/attribute.{attribute}
import lustre/element
import lustre/ssg/atom.{ import lustre/ssg/atom.{
author, content, email, entry, feed, generator, id, link, name, rights, author, content, email, entry, feed, generator, id, link, name, rights,
summary, title, updated, uri, 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) { pub fn generate(_db: Database, config: Configuration) {
fn(posts: List(CompiledPost)) { fn(posts: List(CompiledPost)) {

View file

@ -1,11 +1,11 @@
import gleam/list import gleam/list
import lustre/element import gloss/config.{type Configuration}
import lustre/element/html.{footer, nav}
import lustre/attribute.{attribute, class}
import gloss/models/database.{type Database} import gloss/models/database.{type Database}
import gloss/rendering/views.{type ListInfo} import gloss/rendering/views.{type ListInfo}
import gloss/rendering/views/nav 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) { pub fn generate(db: Database, config: Configuration) {
let single_post_renderer = config.rendering.views.single_post_list(db, config) 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/list
import gleam/option import gleam/option
import gleam/result 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/config.{type Configuration}
import gloss/models/database.{type Database} 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) { pub fn generate(_db: Database, config: Configuration) {
fn(page_type: PageType) { fn(page_type: PageType) {

View file

@ -1,10 +1,10 @@
import gleam/list
import gleam/int import gleam/int
import lustre/element/html.{a, li, span, ul} import gleam/list
import lustre/element.{text}
import lustre/attribute.{attribute, href}
import gloss/rendering/views.{type ListInfo}
import gloss/config.{type Configuration} 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) { pub fn view(list_info: ListInfo, root_path: String, config: Configuration) {
let page_range = list.range(1, list_info.total_pages) 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/compiler.{type CompiledPage}
import gloss/config.{type Configuration} 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) { pub fn generate(db: Database, config: Configuration) {
view(_, db, config) view(_, db, config)

View file

@ -1,17 +1,17 @@
import gleam/option
import gleam/list 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.{ import lustre/element/html.{
a, article, div, footer, h2, header, li, nav, p, time, ul, 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. /// Generate a view that renders a full post.
pub fn full_view(db: Database, config: Configuration) { pub fn full_view(db: Database, config: Configuration) {

View file

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

View file

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

View file

@ -1,15 +1,15 @@
//// The writer takes rendered content and writes it into the filesystem. //// The writer takes rendered content and writes it into the filesystem.
import gleam/list
import gleam/dict import gleam/dict
import gleam/list
import gleam/result import gleam/result
import gleam/string 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
import lustre/ssg/xml 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. /// Write the rendered content into the filesystem using lustre_ssg.
pub fn write(db: RenderDatabase, config: Configuration) { pub fn write(db: RenderDatabase, config: Configuration) {

View file

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