aboutsummaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
Diffstat (limited to 'build')
-rw-r--r--build/layout.moon108
-rw-r--r--build/render_all.moon71
-rw-r--r--build/server.moon3
3 files changed, 12 insertions, 170 deletions
diff --git a/build/layout.moon b/build/layout.moon
deleted file mode 100644
index 61f93cb..0000000
--- a/build/layout.moon
+++ /dev/null
@@ -1,108 +0,0 @@
-import header, aside, footer, div, svg, script, g, circle, h1, span, b, a, img from require 'mmm.dom'
-import navigate_to from (require 'mmm.mmmfs.util') require 'mmm.dom'
-
-pick = (...) ->
- num = select '#', ...
- i = math.ceil math.random! * num
- select i, ...
-
-iconlink = (href, src, alt, style) -> a {
- class: 'iconlink',
- target: '_blank',
- rel: 'me',
- :href,
- img :src, :alt, :style
-}
-
-logo = svg {
- class: 'sun'
- viewBox: '-0.75 -1 1.5 2'
- xmlns: 'http://www.w3.org/2000/svg'
- baseProfile: 'full'
- version: '1.1'
-
- g {
- transform: 'translate(0 .18)'
-
- g { class: 'circle out', circle r: '.6', fill: 'none', 'stroke-width': '.12' }
- g { class: 'circle in', circle r: '.2', stroke: 'none' }
- }
-}
-
-{
- header: header {
- div {
- h1 {
- logo
- span {
- span 'mmm', class: 'bold'
- '​'
- '.s‑ol.nu'
- }
- }
- span "fun stuff with code and wires"
- -- pick 'fun', 'cool', 'weird', 'interesting', 'new'
- -- pick 'stuff', 'things', 'projects', 'experiments', 'news'
- -- "with"
- -- pick 'mostly code', 'code and wires', 'silicon', 'electronics'
- }
- aside {
- navigate_to '/about', 'about me'
- navigate_to '/games', 'games'
- navigate_to '/projects', 'other'
- a {
- href: 'mailto:s%20[removethis]%20[at]%20s-ol.nu'
- 'contact'
- script "
- var l = document.currentScript.parentElement;
- l.href = l.href.replace('%20[at]%20', '@');
- l.href = l.href.replace('%20[removethis]', '') + '?subject=Hey there :)';
- "
- }
- }
- }
- footer: footer {
- span {
- 'made with \xe2\x98\xbd by '
- a 's-ol', href: 'https://twitter.com/S0lll0s'
- ", #{os.date '%Y'}"
- }
- div {
- class: 'icons',
- iconlink 'https://github.com/s-ol', 'https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/github.svg', 'github'
- iconlink 'https://merveilles.town/@s_ol', 'https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/mastodon.svg', 'mastodon'
- iconlink 'https://twitter.com/S0lll0s', 'https://cdn.jsdelivr.net/npm/simple-icons@latest/icons/twitter.svg', 'twitter'
- iconlink 'https://webring.xxiivv.com/#random', 'https://webring.xxiivv.com/icon.black.svg', 'webring',
- { height: '1.3em', 'margin-left': '.3em', 'margin-top': '-0.12em' }
- }
- }
- get_meta: =>
- title = (@get 'title: text/plain') or @gett 'name: alpha'
-
- l = (str) ->
- str = str\gsub '[%s\\n]+$', ''
- str\gsub '\\n', ' '
- e = (str) -> string.format '%q', l str
-
- meta = "
- <meta charset=\"UTF-8\">
- <title>#{l title}</title>
- "
-
- if page_meta = @get '_meta: mmm/dom'
- meta ..= page_meta
- else
- meta ..= "
- <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">
-
- <meta property=\"og:title\" content=#{e title} />
- <meta property=\"og:type\" content=\"website\" />
- <meta property=\"og:url\" content=\"https://mmm.s-ol.nu#{@path}/\" />
- <meta property=\"og:site_name\" content=\"mmm\" />"
-
- if desc = @get 'description: text/plain'
- meta ..= "
- <meta property=\"og:description\" content=#{e desc} />"
-
- meta
-}
diff --git a/build/render_all.moon b/build/render_all.moon
index 14e4cce..4fe827b 100644
--- a/build/render_all.moon
+++ b/build/render_all.moon
@@ -10,73 +10,24 @@ add '?/init.server'
require 'mmm'
import tohtml from require 'mmm.component'
import Browser from require 'mmm.mmmfs.browser'
-import get_meta, header, footer from require 'build.layout'
+import render from require 'mmm.mmmfs.layout'
+import SQLStore from require 'mmm.mmmfs.drivers.sql'
+import load_tree from require 'build.util'
-- usage:
--- moon render_all.moon [db.sqlite3]
-{ file } = arg
+-- moon render_all.moon [db.sqlite3] [startpath]
+{ file, startpath } = arg
export BROWSER
-render = (fileder, output) ->
- BROWSER = Browser fileder
-
- with io.open output, 'w'
- \write [[
- <!DOCTYPE html>
- <html>
- <head>
- <link rel="stylesheet" type="text/css" href="/main.css" />
- <!--
- <link rel="preload" as="fetch" href="/mmm/dom/init.lua" />
- <link rel="preload" as="fetch" href="/mmm/component/init.lua" />
- <link rel="preload" as="fetch" href="/mmm/mmmfs/init.lua" />
- <link rel="preload" as="fetch" href="/mmm/mmmfs/fileder.lua" />
- <link rel="preload" as="fetch" href="/mmm/mmmfs/browser.lua" />
- -->
-
- <link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400" rel="stylesheet">
- ]]
- \write "
- #{get_meta fileder}
- </head>
- <body>
- #{header}
-
- #{assert (tohtml BROWSER), "couldn't render BROWSER"}
-
- #{footer}
- "
- \write [[
- <script src="/highlight.pack.js"></script>
- <script src="//cdnjs.cloudflare.com/ajax/libs/marked/0.5.1/marked.min.js"></script>
- <script src="//cdnjs.cloudflare.com/ajax/libs/svg.js/2.6.6/svg.min.js"></script>
- <script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
- <script src="/fengari-web.js"></script>
- <script type="application/lua" src="/mmm.bundle.lua"></script>
- <script type="application/lua">require 'mmm'</script>
- ]]
- \write "
- <script type=\"application/lua\">
- on_load = on_load or {}
- table.insert(on_load, function()
- local path = #{string.format '%q', path}
- local browser = require 'mmm.mmmfs.browser'
- local root = dofile '/$bundle.lua'
- root:mount('', true)
-
- BROWSER = browser.Browser(root, path, true)
- end)
- </script>
- </body>
- </html>
- "
- \close!
-
-
tree = load_tree SQLStore :name
+tree = tree\walk startpath if startpath
for fileder in coroutine.wrap tree\iterate
print "rendering '#{fileder.path}'..."
os.execute "mkdir -p 'out/#{fileder.path}'"
- render fileder, "out/#{fileder.path}/index.html"
+
+ BROWSER = Browser fileder
+ with io.open "out/#{fileder.path}/index.html", 'w'
+ \write render (tohtml BROWSER), fileder
+ \close!
diff --git a/build/server.moon b/build/server.moon
index dd491d3..b178636 100644
--- a/build/server.moon
+++ b/build/server.moon
@@ -82,7 +82,6 @@ class Server
path = req\get ':path'
path, facet = dir_base path
- print "'#{path}', '#{facet}'"
facet = if #facet > 0
facet = '' if facet == ':'
accept = req\get 'mmm-accept'
@@ -95,7 +94,7 @@ class Server
res = headers.new!
response_type = if status > 299 then 'text/plain'
else if facet then facet.type
- else 'text/plain'
+ else 'text/json'
res\append ':status', tostring status
res\append 'content-type', response_type