From e01ddec3365e77220304d98352e7afae04e12352 Mon Sep 17 00:00:00 2001 From: Mikko Ahlroth Date: Sat, 20 Apr 2024 11:28:10 +0300 Subject: [PATCH] Bump to Gleam 1.1.0 --- .tool-versions | 2 +- gleam.toml | 1 + src/gloss/builder.gleam | 4 ++-- src/gloss/compiler.gleam | 8 ++++---- src/gloss/config.gleam | 6 +++--- src/gloss/defaults.gleam | 22 ++++++++++----------- src/gloss/models/database.gleam | 4 ++-- src/gloss/models/post.gleam | 6 +++--- src/gloss/parser.gleam | 10 +++++----- src/gloss/parser/common.gleam | 4 ++-- src/gloss/parser/menu.gleam | 2 +- src/gloss/parser/page.gleam | 4 ++-- src/gloss/parser/post.gleam | 16 +++++++-------- src/gloss/paths.gleam | 4 ++-- src/gloss/renderer.gleam | 22 ++++++++++----------- src/gloss/rendering/database.gleam | 4 ++-- src/gloss/rendering/views.gleam | 4 ++-- src/gloss/rendering/views/base.gleam | 18 ++++++++--------- src/gloss/rendering/views/feed.gleam | 12 +++++------ src/gloss/rendering/views/list_page.gleam | 8 ++++---- src/gloss/rendering/views/meta.gleam | 10 +++++----- src/gloss/rendering/views/nav.gleam | 10 +++++----- src/gloss/rendering/views/page.gleam | 8 ++++---- src/gloss/rendering/views/single_post.gleam | 20 +++++++++---------- src/gloss/utils/date.gleam | 2 +- src/gloss/utils/time.gleam | 2 +- src/gloss/writer.gleam | 10 +++++----- src/lustre/ssg/atom.gleam | 2 +- 28 files changed, 113 insertions(+), 112 deletions(-) diff --git a/.tool-versions b/.tool-versions index aa5a120..262d702 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,2 @@ -gleam 1.0.0 +gleam 1.1.0 nodejs 20.10.0 diff --git a/gleam.toml b/gleam.toml index 56e3346..1868c5a 100644 --- a/gleam.toml +++ b/gleam.toml @@ -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. diff --git a/src/gloss/builder.gleam b/src/gloss/builder.gleam index dabb945..166c319 100644 --- a/src/gloss/builder.gleam +++ b/src/gloss/builder.gleam @@ -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 { diff --git a/src/gloss/compiler.gleam b/src/gloss/compiler.gleam index 80e7d25..f4fba96 100644 --- a/src/gloss/compiler.gleam +++ b/src/gloss/compiler.gleam @@ -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 { diff --git a/src/gloss/config.gleam b/src/gloss/config.gleam index 28a54a5..d24bb1c 100644 --- a/src/gloss/config.gleam +++ b/src/gloss/config.gleam @@ -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 { diff --git a/src/gloss/defaults.gleam b/src/gloss/defaults.gleam index ec962e9..e0a2fdf 100644 --- a/src/gloss/defaults.gleam +++ b/src/gloss/defaults.gleam @@ -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( diff --git a/src/gloss/models/database.gleam b/src/gloss/models/database.gleam index 93e5ede..d308ce2 100644 --- a/src/gloss/models/database.gleam +++ b/src/gloss/models/database.gleam @@ -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} diff --git a/src/gloss/models/post.gleam b/src/gloss/models/post.gleam index ae86c99..9e6c401 100644 --- a/src/gloss/models/post.gleam +++ b/src/gloss/models/post.gleam @@ -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. diff --git a/src/gloss/parser.gleam b/src/gloss/parser.gleam index 6f8b4a5..e1da665 100644 --- a/src/gloss/parser.gleam +++ b/src/gloss/parser.gleam @@ -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" diff --git a/src/gloss/parser/common.gleam b/src/gloss/parser/common.gleam index 9d6964a..68dc6d1 100644 --- a/src/gloss/parser/common.gleam +++ b/src/gloss/parser/common.gleam @@ -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. diff --git a/src/gloss/parser/menu.gleam b/src/gloss/parser/menu.gleam index 17b265b..6e0649c 100644 --- a/src/gloss/parser/menu.gleam +++ b/src/gloss/parser/menu.gleam @@ -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. diff --git a/src/gloss/parser/page.gleam b/src/gloss/parser/page.gleam index 7220f3c..28b35ac 100644 --- a/src/gloss/parser/page.gleam +++ b/src/gloss/parser/page.gleam @@ -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} diff --git a/src/gloss/parser/post.gleam b/src/gloss/parser/post.gleam index 56826b1..73ef2b3 100644 --- a/src/gloss/parser/post.gleam +++ b/src/gloss/parser/post.gleam @@ -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$" diff --git a/src/gloss/paths.gleam b/src/gloss/paths.gleam index 9c0fec3..2d63247 100644 --- a/src/gloss/paths.gleam +++ b/src/gloss/paths.gleam @@ -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 diff --git a/src/gloss/renderer.gleam b/src/gloss/renderer.gleam index b733d52..c30cb9e 100644 --- a/src/gloss/renderer.gleam +++ b/src/gloss/renderer.gleam @@ -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 { diff --git a/src/gloss/rendering/database.gleam b/src/gloss/rendering/database.gleam index dde6704..b4070ad 100644 --- a/src/gloss/rendering/database.gleam +++ b/src/gloss/rendering/database.gleam @@ -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 { diff --git a/src/gloss/rendering/views.gleam b/src/gloss/rendering/views.gleam index 1783e9e..424efad 100644 --- a/src/gloss/rendering/views.gleam +++ b/src/gloss/rendering/views.gleam @@ -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. /// diff --git a/src/gloss/rendering/views/base.gleam b/src/gloss/rendering/views/base.gleam index aac6afb..19aebe4 100644 --- a/src/gloss/rendering/views/base.gleam +++ b/src/gloss/rendering/views/base.gleam @@ -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 diff --git a/src/gloss/rendering/views/feed.gleam b/src/gloss/rendering/views/feed.gleam index 55ab3f0..e56794d 100644 --- a/src/gloss/rendering/views/feed.gleam +++ b/src/gloss/rendering/views/feed.gleam @@ -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)) { diff --git a/src/gloss/rendering/views/list_page.gleam b/src/gloss/rendering/views/list_page.gleam index 80fd879..b1a32e4 100644 --- a/src/gloss/rendering/views/list_page.gleam +++ b/src/gloss/rendering/views/list_page.gleam @@ -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) diff --git a/src/gloss/rendering/views/meta.gleam b/src/gloss/rendering/views/meta.gleam index 11ee677..416ca6e 100644 --- a/src/gloss/rendering/views/meta.gleam +++ b/src/gloss/rendering/views/meta.gleam @@ -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) { diff --git a/src/gloss/rendering/views/nav.gleam b/src/gloss/rendering/views/nav.gleam index 21ce97e..66c4990 100644 --- a/src/gloss/rendering/views/nav.gleam +++ b/src/gloss/rendering/views/nav.gleam @@ -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) diff --git a/src/gloss/rendering/views/page.gleam b/src/gloss/rendering/views/page.gleam index 8749f22..877add2 100644 --- a/src/gloss/rendering/views/page.gleam +++ b/src/gloss/rendering/views/page.gleam @@ -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) diff --git a/src/gloss/rendering/views/single_post.gleam b/src/gloss/rendering/views/single_post.gleam index 8dd2823..8e2e461 100644 --- a/src/gloss/rendering/views/single_post.gleam +++ b/src/gloss/rendering/views/single_post.gleam @@ -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) { diff --git a/src/gloss/utils/date.gleam b/src/gloss/utils/date.gleam index b40fdf8..5c60979 100644 --- a/src/gloss/utils/date.gleam +++ b/src/gloss/utils/date.gleam @@ -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} diff --git a/src/gloss/utils/time.gleam b/src/gloss/utils/time.gleam index e1e72dd..f1613ef 100644 --- a/src/gloss/utils/time.gleam +++ b/src/gloss/utils/time.gleam @@ -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} diff --git a/src/gloss/writer.gleam b/src/gloss/writer.gleam index 7e2684f..a539382 100644 --- a/src/gloss/writer.gleam +++ b/src/gloss/writer.gleam @@ -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) { diff --git a/src/lustre/ssg/atom.gleam b/src/lustre/ssg/atom.gleam index 39d5c72..956987b 100644 --- a/src/lustre/ssg/atom.gleam +++ b/src/lustre/ssg/atom.gleam @@ -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)