howl 0.3.0 → 0.4.0
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.
- data/.gitignore +1 -1
- data/VERSION +1 -1
- data/howl.gemspec +7 -7
- data/lib/howl/page.rb +1 -1
- data/lib/howl/post.rb +11 -1
- data/lib/howl/site.rb +20 -5
- data/test/fixtures/{pages → site}/css/modules/colors.scss +0 -0
- data/test/fixtures/{pages → site}/css/screen.scss +0 -0
- data/test/fixtures/{pages → site}/has_template.html +0 -0
- data/test/fixtures/{pages → site}/index.html +0 -0
- data/test/fixtures/{pages → site}/no_yaml.html +0 -0
- data/test/fixtures/{pages → site}/simple.html +0 -0
- data/test/howl_test.rb +14 -8
- data/test/teststrap.rb +2 -0
- metadata +8 -8
data/.gitignore
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/howl.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{howl}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.4.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Clinton R. Nixon"]
|
@@ -36,15 +36,15 @@ Gem::Specification.new do |s|
|
|
36
36
|
"lib/howl/site.rb",
|
37
37
|
"lib/howl/template.rb",
|
38
38
|
"lib/howl/view.rb",
|
39
|
-
"test/fixtures/pages/css/modules/colors.scss",
|
40
|
-
"test/fixtures/pages/css/screen.scss",
|
41
|
-
"test/fixtures/pages/has_template.html",
|
42
|
-
"test/fixtures/pages/index.html",
|
43
|
-
"test/fixtures/pages/no_yaml.html",
|
44
|
-
"test/fixtures/pages/simple.html",
|
45
39
|
"test/fixtures/posts/first_post.html",
|
46
40
|
"test/fixtures/posts/markdown_post.md",
|
47
41
|
"test/fixtures/posts/no_date.html",
|
42
|
+
"test/fixtures/site/css/modules/colors.scss",
|
43
|
+
"test/fixtures/site/css/screen.scss",
|
44
|
+
"test/fixtures/site/has_template.html",
|
45
|
+
"test/fixtures/site/index.html",
|
46
|
+
"test/fixtures/site/no_yaml.html",
|
47
|
+
"test/fixtures/site/simple.html",
|
48
48
|
"test/fixtures/templates/alt.html",
|
49
49
|
"test/fixtures/templates/default.html",
|
50
50
|
"test/fixtures/templates/post.html",
|
data/lib/howl/page.rb
CHANGED
data/lib/howl/post.rb
CHANGED
@@ -11,7 +11,7 @@ module Howl
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def output_path
|
14
|
-
site.
|
14
|
+
site.output_path("posts") + date.strftime("%Y/%m/%d") + output_filename
|
15
15
|
end
|
16
16
|
|
17
17
|
def title
|
@@ -21,5 +21,15 @@ module Howl
|
|
21
21
|
def dom_id
|
22
22
|
title.slugify
|
23
23
|
end
|
24
|
+
|
25
|
+
def link
|
26
|
+
"/" + output_path.relative_path_from(site.output_path).to_s
|
27
|
+
end
|
28
|
+
|
29
|
+
def rendered_content
|
30
|
+
render_view = view.dup
|
31
|
+
render_view.delete('template')
|
32
|
+
converter.convert(Mustache.render(@content, render_view))
|
33
|
+
end
|
24
34
|
end
|
25
35
|
end
|
data/lib/howl/site.rb
CHANGED
@@ -10,24 +10,39 @@ module Howl
|
|
10
10
|
root + path
|
11
11
|
end
|
12
12
|
|
13
|
+
def posts_path(path = '')
|
14
|
+
root + "posts" + path
|
15
|
+
end
|
16
|
+
|
17
|
+
def templates_path(path = '')
|
18
|
+
root + "templates" + path
|
19
|
+
end
|
20
|
+
|
21
|
+
def pages_path(path = '')
|
22
|
+
root + "site" + path
|
23
|
+
end
|
24
|
+
|
25
|
+
def output_path(path = '')
|
26
|
+
root + "generated" + path
|
27
|
+
end
|
28
|
+
|
13
29
|
def pages
|
14
|
-
@pages ||= Dir[
|
30
|
+
@pages ||= Dir[pages_path "**/*.*"].map { |path| Page.new(path, self) }
|
15
31
|
end
|
16
32
|
|
17
33
|
def posts
|
18
|
-
@posts ||= Dir[
|
34
|
+
@posts ||= Dir[posts_path "**/*.*"].map { |path| Post.new(path, self) }.sort
|
19
35
|
end
|
20
36
|
|
21
37
|
def templates
|
22
|
-
@templates ||= Hash[Dir[
|
38
|
+
@templates ||= Hash[Dir[templates_path('*')].map { |path|
|
23
39
|
[Pathname.new(path).relative_path_from(path "templates").to_s,
|
24
40
|
Template.new(path, self)]
|
25
41
|
}]
|
26
42
|
end
|
27
43
|
|
28
44
|
def write_to_disk
|
29
|
-
FileUtils.rm_r(
|
30
|
-
#raise (pages + posts).map(&:class).inspect
|
45
|
+
FileUtils.rm_r(output_path) if File.exist?(output_path)
|
31
46
|
(pages + posts).each do |page|
|
32
47
|
FileUtils.makedirs(page.output_path.dirname)
|
33
48
|
page.output_path.open("w") do |fh|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/test/howl_test.rb
CHANGED
@@ -5,7 +5,7 @@ context "Site" do
|
|
5
5
|
setup { @site = Site.new(fixture_path) }
|
6
6
|
|
7
7
|
should("find all pages") {
|
8
|
-
topic.pages == Dir[fixture_path("
|
8
|
+
topic.pages == Dir[fixture_path("site/**/*.*")].map { |path| Page.new(path, topic) }
|
9
9
|
}
|
10
10
|
|
11
11
|
should("write out all pages") {
|
@@ -18,7 +18,7 @@ context "Site" do
|
|
18
18
|
should("write out all posts") {
|
19
19
|
topic.write_to_disk
|
20
20
|
topic.posts.map { |post|
|
21
|
-
Dir[topic.path("
|
21
|
+
Dir[topic.path("generated/posts") + "**/*.*"].map { |path|
|
22
22
|
File.basename(path, File.extname(path))
|
23
23
|
}.include?(post.path.basename(post.extension).to_s)
|
24
24
|
}.all?
|
@@ -26,7 +26,7 @@ context "Site" do
|
|
26
26
|
|
27
27
|
context "Page" do
|
28
28
|
context "simple.html" do
|
29
|
-
setup { Page.new(fixture_path("
|
29
|
+
setup { Page.new(fixture_path("site/simple.html"), @site) }
|
30
30
|
|
31
31
|
asserts("#content") { topic.content.strip }.equals "<h1>{{title}}</h1>"
|
32
32
|
asserts("#view is correct") {
|
@@ -35,12 +35,12 @@ context "Site" do
|
|
35
35
|
asserts("#rendered") { topic.render.strip }.equals "<h1>This is a simple page</h1>"
|
36
36
|
|
37
37
|
should("be able to find its output path") {
|
38
|
-
topic.output_path == (topic.site.
|
38
|
+
topic.output_path == (topic.site.output_path "simple.html")
|
39
39
|
}
|
40
40
|
end
|
41
41
|
|
42
42
|
context "no_yaml.html" do
|
43
|
-
setup { Page.new(fixture_path("
|
43
|
+
setup { Page.new(fixture_path("site/no_yaml.html"), @site) }
|
44
44
|
|
45
45
|
asserts("#content") { topic.content.strip }.equals "This page has no YAML front-matter."
|
46
46
|
asserts("#view is correct") {
|
@@ -50,7 +50,7 @@ context "Site" do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
context "has_template.html" do
|
53
|
-
setup { Page.new(fixture_path("
|
53
|
+
setup { Page.new(fixture_path("site/has_template.html"), @site) }
|
54
54
|
|
55
55
|
asserts("#rendered") { topic.render.clean }.equals %Q[
|
56
56
|
<html>
|
@@ -64,7 +64,7 @@ context "Site" do
|
|
64
64
|
end
|
65
65
|
|
66
66
|
context "index.html" do
|
67
|
-
setup { Page.new(fixture_path("
|
67
|
+
setup { Page.new(fixture_path("site/index.html"), @site) }
|
68
68
|
|
69
69
|
should "show all posts" do
|
70
70
|
doc = Nokogiri.parse(topic.render)
|
@@ -83,9 +83,15 @@ context "Site" do
|
|
83
83
|
}
|
84
84
|
|
85
85
|
asserts(:output_path).equals {
|
86
|
-
topic.site.path("
|
86
|
+
topic.site.path("generated/posts/2010/09/04") + "first_post.html"
|
87
87
|
}
|
88
88
|
|
89
|
+
should("render content") {
|
90
|
+
topic.rendered_content.clean == topic.converter.convert(topic.content).clean
|
91
|
+
}
|
92
|
+
|
93
|
+
asserts(:link).equals { "/posts/2010/09/04/first_post.html" }
|
94
|
+
|
89
95
|
context "without a date" do
|
90
96
|
setup { Post.new(fixture_path("posts/no_date.html"), @site) }
|
91
97
|
|
data/test/teststrap.rb
CHANGED
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
7
|
+
- 4
|
8
8
|
- 0
|
9
|
-
version: 0.
|
9
|
+
version: 0.4.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Clinton R. Nixon
|
@@ -125,15 +125,15 @@ files:
|
|
125
125
|
- lib/howl/site.rb
|
126
126
|
- lib/howl/template.rb
|
127
127
|
- lib/howl/view.rb
|
128
|
-
- test/fixtures/pages/css/modules/colors.scss
|
129
|
-
- test/fixtures/pages/css/screen.scss
|
130
|
-
- test/fixtures/pages/has_template.html
|
131
|
-
- test/fixtures/pages/index.html
|
132
|
-
- test/fixtures/pages/no_yaml.html
|
133
|
-
- test/fixtures/pages/simple.html
|
134
128
|
- test/fixtures/posts/first_post.html
|
135
129
|
- test/fixtures/posts/markdown_post.md
|
136
130
|
- test/fixtures/posts/no_date.html
|
131
|
+
- test/fixtures/site/css/modules/colors.scss
|
132
|
+
- test/fixtures/site/css/screen.scss
|
133
|
+
- test/fixtures/site/has_template.html
|
134
|
+
- test/fixtures/site/index.html
|
135
|
+
- test/fixtures/site/no_yaml.html
|
136
|
+
- test/fixtures/site/simple.html
|
137
137
|
- test/fixtures/templates/alt.html
|
138
138
|
- test/fixtures/templates/default.html
|
139
139
|
- test/fixtures/templates/post.html
|