4 | 4 |
pick = (...) ->
|
5 | 5 |
num = select '#', ...
|
6 | 6 |
i = math.ceil math.random! * num
|
7 | |
select i, ...
|
|
7 |
(select i, ...)
|
8 | 8 |
|
9 | 9 |
iconlink = (href, src, alt, style) -> a {
|
10 | 10 |
class: 'iconlink',
|
|
29 | 29 |
}
|
30 | 30 |
}
|
31 | 31 |
|
32 | |
header = header {
|
33 | |
div {
|
34 | |
h1 {
|
35 | |
logo
|
36 | |
span {
|
37 | |
span 'mmm', class: 'bold'
|
38 | |
'​'
|
39 | |
'.s‑ol.nu'
|
|
32 |
gen_header = ->
|
|
33 |
header {
|
|
34 |
div {
|
|
35 |
h1 {
|
|
36 |
navigate_to '', logo
|
|
37 |
span {
|
|
38 |
span 'mmm', class: 'bold'
|
|
39 |
'​'
|
|
40 |
'.s‑ol.nu'
|
|
41 |
}
|
|
42 |
}
|
|
43 |
-- span "fun stuff with code and wires"
|
|
44 |
table.concat {
|
|
45 |
pick 'fun', 'cool', 'weird', 'interesting', 'new', 'pleasant'
|
|
46 |
pick 'stuff', 'things', 'projects', 'experiments', 'visuals', 'ideas'
|
|
47 |
pick "with", 'and'
|
|
48 |
pick 'mostly code', 'code and wires', 'silicon', 'electronics', 'shaders',
|
|
49 |
'oscilloscopes', 'interfaces', 'hardware', 'FPGAs'
|
|
50 |
}, ' '
|
|
51 |
}
|
|
52 |
aside {
|
|
53 |
navigate_to '/about', 'about me'
|
|
54 |
navigate_to '/games', 'games'
|
|
55 |
navigate_to '/projects', 'other'
|
|
56 |
a {
|
|
57 |
href: 'mailto:s%20[removethis]%20[at]%20s-ol.nu'
|
|
58 |
'contact'
|
|
59 |
script "
|
|
60 |
var l = document.currentScript.parentElement;
|
|
61 |
l.href = l.href.replace('%20[at]%20', '@');
|
|
62 |
l.href = l.href.replace('%20[removethis]', '') + '?subject=Hey there :)';
|
|
63 |
"
|
40 | 64 |
}
|
41 | 65 |
}
|
42 | |
span "fun stuff with code and wires"
|
43 | |
-- pick 'fun', 'cool', 'weird', 'interesting', 'new'
|
44 | |
-- pick 'stuff', 'things', 'projects', 'experiments', 'news'
|
45 | |
-- "with"
|
46 | |
-- pick 'mostly code', 'code and wires', 'silicon', 'electronics'
|
47 | 66 |
}
|
48 | |
aside {
|
49 | |
navigate_to '/about', 'about me'
|
50 | |
navigate_to '/games', 'games'
|
51 | |
navigate_to '/projects', 'other'
|
52 | |
a {
|
53 | |
href: 'mailto:s%20[removethis]%20[at]%20s-ol.nu'
|
54 | |
'contact'
|
55 | |
script "
|
56 | |
var l = document.currentScript.parentElement;
|
57 | |
l.href = l.href.replace('%20[at]%20', '@');
|
58 | |
l.href = l.href.replace('%20[removethis]', '') + '?subject=Hey there :)';
|
59 | |
"
|
60 | |
}
|
61 | |
}
|
62 | |
}
|
63 | 67 |
|
64 | 68 |
footer = footer {
|
65 | 69 |
span {
|
|
107 | 111 |
|
108 | 112 |
meta
|
109 | 113 |
|
110 | |
render = (content, fileder) ->
|
|
114 |
render = (content, fileder, opts={}) ->
|
|
115 |
opts.meta or= get_meta fileder
|
|
116 |
opts.scripts or= ''
|
|
117 |
|
|
118 |
unless opts.noview
|
|
119 |
content = [[
|
|
120 |
<div class="view main">
|
|
121 |
<div class="content">
|
|
122 |
]] .. content .. [[
|
|
123 |
</div>
|
|
124 |
</div>
|
|
125 |
]]
|
|
126 |
|
111 | 127 |
buf = [[
|
112 | 128 |
<!DOCTYPE html>
|
113 | 129 |
<html>
|
114 | 130 |
<head>
|
115 | |
<link rel="stylesheet" type="text/css" href="/main.css" />
|
116 | |
<!--
|
117 | |
<link rel="preload" as="fetch" href="/mmm/dom/init.lua" />
|
118 | |
<link rel="preload" as="fetch" href="/mmm/component/init.lua" />
|
119 | |
<link rel="preload" as="fetch" href="/mmm/mmmfs/init.lua" />
|
120 | |
<link rel="preload" as="fetch" href="/mmm/mmmfs/fileder.lua" />
|
121 | |
<link rel="preload" as="fetch" href="/mmm/mmmfs/browser.lua" />
|
122 | |
-->
|
123 | |
|
124 | |
<link href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400" rel="stylesheet">
|
|
131 |
<link rel="stylesheet" type="text/css" href="/?main.css" />
|
|
132 |
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400" />
|
125 | 133 |
]]
|
126 | 134 |
buf ..= "
|
127 | 135 |
#{get_meta fileder}
|
128 | 136 |
</head>
|
129 | 137 |
<body>
|
130 | |
#{header}
|
|
138 |
#{gen_header!}
|
131 | 139 |
|
132 | 140 |
#{content}
|
133 | 141 |
|
134 | 142 |
#{footer}
|
135 | 143 |
"
|
136 | 144 |
buf ..= [[
|
137 | |
<script src="/highlight.pack.js"></script>
|
138 | |
<script src="//cdnjs.cloudflare.com/ajax/libs/marked/0.5.1/marked.min.js"></script>
|
139 | |
<script src="//cdnjs.cloudflare.com/ajax/libs/svg.js/2.6.6/svg.min.js"></script>
|
140 | |
<script src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
|
141 | |
<script src="/fengari-web.js"></script>
|
142 | |
<script type="application/lua" src="/mmm.bundle.lua"></script>
|
|
145 |
<script type="application/javascript" src="/?highlight.pack.js"></script>
|
|
146 |
<script type="application/javascript" src="//cdnjs.cloudflare.com/ajax/libs/marked/0.5.1/marked.min.js"></script>
|
|
147 |
<script type="application/javascript" src="//cdnjs.cloudflare.com/ajax/libs/svg.js/2.6.6/svg.min.js"></script>
|
|
148 |
<script type="application/javascript" src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
|
|
149 |
<script type="application/javascript" src="/?fengari-web.js"></script>
|
|
150 |
<script type="application/lua" src="/?mmm.bundle.lua"></script>
|
143 | 151 |
<script type="application/lua">require 'mmm'</script>
|
144 | 152 |
]]
|
|
153 |
|
|
154 |
buf ..= opts.scripts
|
|
155 |
-- <script type=\"application/lua\">
|
|
156 |
-- on_load = on_load or {}
|
|
157 |
-- table.insert(on_load, function()
|
|
158 |
-- local path = #{string.format '%q', path}
|
|
159 |
-- local browser = require 'mmm.mmmfs.browser'
|
|
160 |
-- local root = dofile '/$bundle.lua'
|
|
161 |
-- root:mount('', true)
|
|
162 |
|
|
163 |
-- BROWSER = browser.Browser(root, path, true)
|
|
164 |
-- end)
|
|
165 |
-- </script>
|
145 | 166 |
buf ..= "
|
146 | |
<script type=\"application/lua\">
|
147 | |
on_load = on_load or {}
|
148 | |
table.insert(on_load, function()
|
149 | |
local path = #{string.format '%q', path}
|
150 | |
local browser = require 'mmm.mmmfs.browser'
|
151 | |
local root = dofile '/$bundle.lua'
|
152 | |
root:mount('', true)
|
153 | |
|
154 | |
BROWSER = browser.Browser(root, path, true)
|
155 | |
end)
|
156 | |
</script>
|
157 | 167 |
</body>
|
158 | 168 |
</html>
|
159 | 169 |
"
|