diff --git a/index.html b/index.html index e9c40ff..8ed32af 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,16 @@ $render{"templates/wares"}

Posts

-$list_posts{limit = 5} +$({{go = "yeah"}})[[

$go! I can't believe this thing works!

]] +$(blah)[[$say, ]] +$blah[[

$say

]] +$(get_posts({limit = 5}))[[ +
+

$post_title

+ — $blurb + Read post → +
+]]

View more posts diff --git a/site.moon b/site.moon index b17601f..68f9eb2 100644 --- a/site.moon +++ b/site.moon @@ -2,13 +2,14 @@ sitegen = require "sitegen" Site = require "sitegen.site" Path = require "sitegen.path" html = require "sitegen.html" +common = require "sitegen.common" cosmo = require "sitegen.cosmo" date = require "date" html_renderer = require "sitegen.renderers.html" import tag from html import escape_patt from require "sitegen.common" -import p from require "moon" +import p from require "moon" -- debug -- Change output dir to what Openresty prefers Site.config.out_dir = "html/" @@ -51,75 +52,89 @@ join = (first, last, delimiter="/") -> table.concat { first, last }, delimiter reverse = (list={}) -> [item for item in *list[#list, 1, -1]] target = (path, prefix) -> join prefix, rootname(last(split path)) -posts = (path=".") -> - files = reverse get_files path - {join(path, file), target(file, "/posts") for file in *files} - extract_id = (source) -> string.match Path.filename(source), "%a[%w%-]+" extract_date = (source) -> string.match Path.filename(source), "%d+%-%d%d%-%d%d" format_date = (str) -> date(str)\fmt "%b %d, %Y" publish_date = (path) -> format_date extract_date path -posts2 = (path=".") -> - files = reverse get_files path - - [{ - path: join(path, file) - target: Path.join Path.basepath(target(file, "/posts")), extract_id(join(path, file)) - post_id: extract_id join(path, file) - publish_date: publish_date join(path, file) - } for file in *files] - -common = require("sitegen.common") h = (word) -> word\sub(1, 1)\upper! t = (word) -> word\sub(2, -1)\lower! titleize = (word) -> h(word), t(word) -titleize_slug = (slug) -> +titleize_slug = (slug="") -> words = [{ titleize word } for word in *common.split slug, "-"] table.concat [head .. tail for { head, tail } in *words], " " +template = [[ +
+

$post_title

+ — $blurb + Read post → +
+]] + +-- limit the number with args {limit = 5} list_posts = (page, args={}) -> posts = page.site\query_pages { is_a: "post" } table.sort posts, (a, b) -> a.source > b.source - table.concat [common.fill_ignoring_pre [[ -
-

$post_title

- — $blurb - Read post → -
- ]], { + a = table.concat [common.fill_ignoring_pre template, { target: meta.target post_title: meta.title or titleize_slug meta.id publish_date: publish_date source blurb: meta.blurb } for { meta: meta, source: source } in *posts[1, args.limit or #posts]] -list_posts2 = (page, args={}) -> - pages = page.site\query_pages { is_a: "post" } - table.sort pages, (a, b) -> a.source > b.source + p for { meta: meta, source: source } in *posts[1, args.limit or #posts] + common.fill_ignoring_pre template, { + target: "target" + post_title: "post_title" + publish_date: "publish_date" + blurb: "blurb" + } + a - posts = [{ - target: meta.target - post_title: meta.title or titleize_slug(meta.id) - publish_date: publish_date source - blurb: meta.blurb - } for { meta: meta, source: source } in *pages[1, args.limit or #pages]] - - for post in *posts do cosmo.yield post +get_posts = (args={}) => + posts = @site\query_pages { is_a: "post" } + table.sort posts, (a, b) -> a.source > b.source + for { meta: meta, source: source } in *posts[1, args.limit or #posts] + { + target: meta.target + post_title: meta.title or titleize_slug meta.id + publish_date: publish_date source + blurb: meta.blurb + } +-- replace '$if' helper function with cosmo's 'cif' html_renderer.cosmo_helpers.if = (args, has_block) => cosmo.cif args, has_block -html_renderer.cosmo_helpers.titleize = (slug) => html.build -> - titleize_slug(slug) if slug +-- add a '$titleize' helper function +html_renderer.cosmo_helpers.titleize = (slug) => titleize_slug slug + +documents = (path=".") -> + files = reverse get_files path + {join(path, file), target(file, "/posts") for file in *files} + +-- get_some = () -> {{say: "this"}, {say: "that"}} +get_some = (args={}) => + posts = @site\query_pages { is_a: "post" } + table.sort posts, (a, b) -> a.source > b.source + + [{ + target: post.meta.target + post_title: post.meta.title or titleize_slug post.meta.id + publish_date: publish_date post.source + blurb: post.meta.blurb + } for post in *posts[1, args.limit or #posts]] sitegen.create => @site_title = "WebDevCat.me" @app_name = "stasis" @version = "0.2.12" @list_posts = list_posts + @get_posts = get_posts + @get_some = get_some - add "index.html", title: "Catalin Mititiuc" + add "index.html", title: "Catalin Mititiuc", blah: {{say: "wan"},{say: "tuu"}} add "blog.html", title: "Posts", target: "posts/index", template: "blog" -- add "about.html", some: { @@ -127,7 +142,7 @@ sitegen.create => -- { one: "A", two: "B" } -- }, cif: cosmo.cif, math: math, x: 2 - for path, target in pairs posts "docs" + for path, target in pairs documents "docs" id = extract_id path add path, @@ -136,7 +151,6 @@ sitegen.create => is_a: "post" publish_date: publish_date path id: id - -- titleize: (slug) -> html.build -> titleize_slug(slug) -- replace post markdown yaml headers with moonscript headers filter "docs", (body) =>