solutus 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/solutus.rb +81 -15
- data/resources/editBlog.html +0 -0
- data/resources/index.html +18 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49cd8eff79c5ef6ec077eca26f41a41d665388f7a4dcac730a310f1df588cb95
|
4
|
+
data.tar.gz: 8f502367c1b27d14040cf2856fab20f365f91b3c05e6b26486a4102a8329e3fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a1aae2085d6b3ac081bf89db1e3b74a2aba9b72c4616e8b1ab977409f4da952cf0a8d8e3fde3e00946a69ba79f1bfa90639cc9396a8ca746c1bcdd6b1db4bfcb
|
7
|
+
data.tar.gz: '09e0f4b38235c12bc62efed2705bbf021ac68428cda126a9e1429daf18becea546c680ea76d769b5e4730f06e006f61b9c585a6d6f4d9e28656abd5b9e8356f3'
|
data/lib/solutus.rb
CHANGED
@@ -9,11 +9,13 @@ class Solutus
|
|
9
9
|
BLOG_TEMPLATE = "post"
|
10
10
|
BUILD_PATH = "deploy"
|
11
11
|
SITE_PATH = File.join(BUILD_PATH, "site")
|
12
|
+
BLOG_BUILD_PATH = File.join(SITE_PATH, "archive")
|
12
13
|
STATIC_PATH = "static"
|
13
14
|
TEMPLATES_PATH = "templates"
|
14
15
|
SITE_PAGES_PATH = File.join("pages", "site-pages")
|
15
16
|
POSTS_PATH = File.join("pages", "posts")
|
16
17
|
BLOG_DATE_FORMAT = "%b %-d, %Y"
|
18
|
+
SETTINGS_FILE = "settings.yml"
|
17
19
|
|
18
20
|
class Solutus_Server < Sinatra::Base
|
19
21
|
set :public_folder, SITE_PATH
|
@@ -21,13 +23,24 @@ class Solutus
|
|
21
23
|
get "/" do
|
22
24
|
send_file File.join(settings.public_folder, 'index.html')
|
23
25
|
end
|
26
|
+
|
27
|
+
get "/reset" do
|
28
|
+
Solutus.command("build")
|
29
|
+
redirect "/"
|
30
|
+
end
|
24
31
|
|
25
32
|
get "/edit" do
|
26
|
-
|
33
|
+
send_file File.join(path_to_resources, "index.html")
|
27
34
|
end
|
28
|
-
|
29
|
-
|
30
|
-
"
|
35
|
+
|
36
|
+
post "/newpost" do
|
37
|
+
Solutus.command("new", "post", params["post-title"])
|
38
|
+
Solutus.build
|
39
|
+
send_file File.join(path_to_resources, "editBlog.html")
|
40
|
+
end
|
41
|
+
|
42
|
+
def path_to_resources
|
43
|
+
File.join(File.dirname(File.expand_path(__FILE__)), '../resources')
|
31
44
|
end
|
32
45
|
end
|
33
46
|
|
@@ -79,6 +92,13 @@ class Solutus
|
|
79
92
|
end
|
80
93
|
|
81
94
|
def self.build
|
95
|
+
yml_text = ""
|
96
|
+
f = File.open(SETTINGS_FILE, "r")
|
97
|
+
f.each_line do |line|
|
98
|
+
yml_text += line
|
99
|
+
end
|
100
|
+
settings_data = YAML.load(yml_text)
|
101
|
+
|
82
102
|
if File.directory?(BUILD_PATH)
|
83
103
|
FileUtils.remove_dir(BUILD_PATH)
|
84
104
|
end
|
@@ -112,7 +132,7 @@ class Solutus
|
|
112
132
|
yml_text += line
|
113
133
|
end
|
114
134
|
data = YAML.load(yml_text)
|
115
|
-
html = render_page(templates, data, false)
|
135
|
+
html = render_page(templates, settings_data, data, false)
|
116
136
|
new_path = File.join(SITE_PATH, entry.split(".")[0] + ".html")
|
117
137
|
f = File.new(new_path, "w")
|
118
138
|
puts "Created #{new_path}"
|
@@ -121,6 +141,7 @@ class Solutus
|
|
121
141
|
end
|
122
142
|
end
|
123
143
|
|
144
|
+
blog_urls = Hash.new
|
124
145
|
Dir.entries(POSTS_PATH).each do |entry|
|
125
146
|
next if entry == "." || entry == ".."
|
126
147
|
path = File.join(POSTS_PATH, entry)
|
@@ -136,19 +157,51 @@ class Solutus
|
|
136
157
|
date = data["date"]
|
137
158
|
|
138
159
|
puts "Rendering blog post #{entry}"
|
139
|
-
html = render_page(templates, data, true)
|
160
|
+
html = render_page(templates, settings_data, data, true)
|
161
|
+
|
162
|
+
relative_dir = File.join(date.year.to_s, date.month.to_s, date.day.to_s)
|
163
|
+
root_url = File.join("archive", relative_dir, entry.split(".")[0] + ".html")
|
164
|
+
|
165
|
+
year = date.year.to_s
|
166
|
+
if !blog_urls.key?(year)
|
167
|
+
blog_urls[year] = Array.new
|
168
|
+
end
|
169
|
+
blog_urls[year].push({"title" => data["title"], "url" => root_url, "date" => date})
|
140
170
|
|
141
|
-
dir_path = File.join(
|
171
|
+
dir_path = File.join(BLOG_BUILD_PATH, relative_dir)
|
142
172
|
if !File.directory?(dir_path)
|
143
173
|
FileUtils.mkdir_p(dir_path)
|
144
174
|
end
|
145
|
-
file_path = File.join(
|
175
|
+
file_path = File.join(SITE_PATH, root_url)
|
146
176
|
puts "Created #{file_path}"
|
147
177
|
f = File.new(file_path, "w")
|
148
178
|
f.write(html)
|
149
179
|
f.close()
|
150
|
-
end
|
180
|
+
end
|
181
|
+
|
151
182
|
#TODO: CREATE SOME FCUKIN BLOG NAVIGATION HTML PAGES
|
183
|
+
content = ""
|
184
|
+
blog_urls.each do |yr, arr|
|
185
|
+
sorted = arr.sort_by {|k| k["date"]} .reverse
|
186
|
+
content += "<h3>#{yr}</h3>\n<hr>\n"
|
187
|
+
content += "<ul>"
|
188
|
+
sorted.each do |hash|
|
189
|
+
url = hash["url"]
|
190
|
+
title = hash["title"]
|
191
|
+
pretty_date = hash["date"].strftime("%b %-d")
|
192
|
+
content += "<li><a href=\"/#{url}\">#{title}</a> (#{pretty_date})</li>"
|
193
|
+
end
|
194
|
+
content += "</ul>"
|
195
|
+
end
|
196
|
+
path = File.join(SITE_PATH, "archive.html")
|
197
|
+
data = Hash.new
|
198
|
+
data["title"] = "Archive"
|
199
|
+
data["content"] = content
|
200
|
+
html = render_page(templates, settings_data, data, false)
|
201
|
+
f = File.new(path, "w")
|
202
|
+
f.write(html)
|
203
|
+
f.close
|
204
|
+
puts "Created blog archive @ #{path}"
|
152
205
|
|
153
206
|
end
|
154
207
|
|
@@ -193,7 +246,7 @@ HERE
|
|
193
246
|
title: #{title}
|
194
247
|
date: #{date}
|
195
248
|
---
|
196
|
-
*This is a
|
249
|
+
*This is a temporary blog post page!*
|
197
250
|
HERE
|
198
251
|
f = File.new(path, "w")
|
199
252
|
f.write(text)
|
@@ -201,13 +254,16 @@ HERE
|
|
201
254
|
puts "Created new blog post #{title} at #{path}"
|
202
255
|
end
|
203
256
|
|
204
|
-
def self.render_page(templates, data, blog)
|
257
|
+
def self.render_page(templates, default_data, data, blog)
|
205
258
|
if data.key?("template")
|
206
259
|
Mustache.template = templates[data["template"]]
|
207
260
|
else
|
208
261
|
Mustache.template = templates[DEFAULT_TEMPLATE]
|
209
262
|
end
|
210
263
|
result = Mustache.new
|
264
|
+
default_data.each do |key, val|
|
265
|
+
result[key.to_sym] = val
|
266
|
+
end
|
211
267
|
data.each do |key, val|
|
212
268
|
next if key == "template"
|
213
269
|
if key != "title"
|
@@ -262,7 +318,7 @@ HERE
|
|
262
318
|
Dir.mkdir(name)
|
263
319
|
|
264
320
|
paths = Array.new
|
265
|
-
["deploy", "static", "
|
321
|
+
["deploy", "static", "templates", "pages"].each do |dir|
|
266
322
|
paths.push(File.join(name, dir))
|
267
323
|
end
|
268
324
|
["css", "js", "imgs"].each do |dir|
|
@@ -278,7 +334,15 @@ HERE
|
|
278
334
|
|
279
335
|
settings_file = <<HERE
|
280
336
|
name: #{name}
|
281
|
-
author: Your Name
|
337
|
+
author: Your Name
|
338
|
+
watermark: |
|
339
|
+
<p style="text-align: center;">
|
340
|
+
<small>Powered by <a href="https://rubygems.org/gems/solutus/versions/0.0.1">Solutus</a></small>
|
341
|
+
</p>
|
342
|
+
stylesheets: |
|
343
|
+
<link rel="stylesheet" type="text/css" href="/css/styles.css" />
|
344
|
+
scripts: |
|
345
|
+
<script></script>
|
282
346
|
HERE
|
283
347
|
|
284
348
|
styles_file = <<HERE
|
@@ -291,15 +355,17 @@ HERE
|
|
291
355
|
<!DOCTYPE html>
|
292
356
|
<head>
|
293
357
|
<title>{{title}}</title>
|
294
|
-
|
358
|
+
{{{stylesheets}}}
|
295
359
|
</head>
|
296
360
|
<body>
|
297
361
|
<div id="solutus-everything">
|
298
362
|
{{#blog}}
|
299
363
|
<h1>{{title}}</h1>
|
300
|
-
{{date}}
|
364
|
+
{{{date}}}
|
301
365
|
{{/blog}}
|
302
366
|
{{{content}}}
|
367
|
+
{{{watermark}}}
|
368
|
+
{{{scripts}}}
|
303
369
|
</div>
|
304
370
|
</body>
|
305
371
|
</html>
|
File without changes
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<head>
|
3
|
+
<title>Editing Site</title>
|
4
|
+
</head>
|
5
|
+
<body>
|
6
|
+
<h1>Editing Website</h1>
|
7
|
+
<p><a href="/">View Site</a></p>
|
8
|
+
<p>
|
9
|
+
<form method="post" action="/newpost">
|
10
|
+
<fieldset>
|
11
|
+
<legend>New Blog Post:</legend>
|
12
|
+
<p><label for="post-title">Title:</label> <input type="text" name="post-title"></p>
|
13
|
+
<p><button type="submit">Create</button></fieldset></p>
|
14
|
+
</fieldset>
|
15
|
+
</form>
|
16
|
+
</p>
|
17
|
+
</body>
|
18
|
+
</html>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solutus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jerome Wei
|
@@ -10,7 +10,7 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2018-05-15 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: A miminal static site generator
|
13
|
+
description: A miminal static site generator and local Web frontend
|
14
14
|
email: jeromew@berkeley.edu
|
15
15
|
executables:
|
16
16
|
- solutus
|
@@ -19,6 +19,8 @@ extra_rdoc_files: []
|
|
19
19
|
files:
|
20
20
|
- bin/solutus
|
21
21
|
- lib/solutus.rb
|
22
|
+
- resources/editBlog.html
|
23
|
+
- resources/index.html
|
22
24
|
homepage: https://github.com/jeromew21/solutus
|
23
25
|
licenses:
|
24
26
|
- MIT
|
@@ -42,5 +44,5 @@ rubyforge_project:
|
|
42
44
|
rubygems_version: 2.7.6
|
43
45
|
signing_key:
|
44
46
|
specification_version: 4
|
45
|
-
summary:
|
47
|
+
summary: simplicity
|
46
48
|
test_files: []
|