massimo 0.3.9 → 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/README.md +70 -4
- data/Rakefile +2 -2
- data/VERSION +1 -1
- data/lib/massimo/command.rb +26 -26
- data/lib/massimo/helpers.rb +9 -9
- data/lib/massimo/javascript.rb +9 -27
- data/lib/massimo/page.rb +28 -49
- data/lib/massimo/resource/base.rb +71 -0
- data/lib/massimo/resource/collection.rb +56 -0
- data/lib/massimo/resource/processing.rb +64 -0
- data/lib/massimo/site.rb +43 -103
- data/lib/massimo/stylesheet.rb +15 -22
- data/lib/massimo/templates.rb +4 -4
- data/lib/massimo/view.rb +5 -5
- data/lib/massimo.rb +27 -16
- data/massimo.gemspec +11 -7
- data/test/helper.rb +11 -5
- data/test/test_helpers.rb +25 -0
- data/test/test_page.rb +6 -0
- data/test/test_resource.rb +47 -4
- data/test/test_site.rb +19 -52
- data/test/test_view.rb +4 -0
- metadata +9 -5
- data/lib/massimo/resource.rb +0 -52
data/test/test_site.rb
CHANGED
@@ -2,39 +2,33 @@ require File.join(File.dirname(__FILE__), "helper")
|
|
2
2
|
|
3
3
|
class TestSite < Test::Unit::TestCase
|
4
4
|
|
5
|
-
def source_page_paths
|
6
|
-
@source_page_paths ||= Pathname.glob(source_dir("pages", "**", "*")).
|
7
|
-
reject { |p| p.basename.to_s =~ /^_/ || File.directory?(p) }.
|
8
|
-
collect { |p| p.basename }
|
9
|
-
end
|
10
|
-
|
11
5
|
should "store configuration options" do
|
12
6
|
@site = Massimo::Site(
|
13
|
-
:source
|
14
|
-
:output
|
7
|
+
:source => source_dir,
|
8
|
+
:output => output_dir
|
15
9
|
)
|
16
|
-
assert_equal
|
17
|
-
assert_equal
|
10
|
+
assert_equal source_dir, @site.options[:source]
|
11
|
+
assert_equal output_dir, @site.options[:output]
|
18
12
|
end
|
19
13
|
|
20
14
|
should "use default options unless specified" do
|
21
|
-
@site = Massimo::Site(:
|
22
|
-
assert_equal
|
23
|
-
assert_equal
|
15
|
+
@site = Massimo::Site(:source => source_dir)
|
16
|
+
assert_equal source_dir, @site.options[:source]
|
17
|
+
assert_equal Massimo::Site::DEFAULT_OPTIONS[:output], @site.options[:output]
|
24
18
|
end
|
25
19
|
|
26
20
|
should "have refresh the configuration if new options are set" do
|
27
|
-
Massimo::Site(:
|
28
|
-
@site = Massimo::Site(:
|
29
|
-
assert_equal Massimo::Site::DEFAULT_OPTIONS[:
|
21
|
+
Massimo::Site(:source => source_dir, :output => "/the/wrong/dir")
|
22
|
+
@site = Massimo::Site(:source => source_dir)
|
23
|
+
assert_equal Massimo::Site::DEFAULT_OPTIONS[:output], @site.options[:output]
|
30
24
|
end
|
31
25
|
|
32
26
|
should "have methods for determining the environment" do
|
33
|
-
@site = Massimo::Site()
|
27
|
+
@site = Massimo::Site(:source => source_dir)
|
34
28
|
assert @site.development?
|
35
|
-
@site = Massimo::Site(:environment => :development)
|
29
|
+
@site = Massimo::Site(:source => source_dir, :environment => :development)
|
36
30
|
assert @site.development?
|
37
|
-
@site = Massimo::Site(:environment => :production)
|
31
|
+
@site = Massimo::Site(:source => source_dir, :environment => :production)
|
38
32
|
assert @site.production?
|
39
33
|
end
|
40
34
|
|
@@ -45,12 +39,12 @@ class TestSite < Test::Unit::TestCase
|
|
45
39
|
assert_equal source_dir("some", "path"), @site.source_dir("some", "path")
|
46
40
|
end
|
47
41
|
|
48
|
-
should "have a directory shortcut methods" do
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
end
|
42
|
+
# should "have a directory shortcut methods" do
|
43
|
+
# assert_equal source_dir("pages", "some", "file.txt"), @site.pages_dir("some", "file.txt")
|
44
|
+
# assert_equal source_dir("views", "some", "file.txt"), @site.views_dir("some", "file.txt")
|
45
|
+
# assert_equal source_dir("stylesheets", "some", "file.txt"), @site.stylesheets_dir("some", "file.txt")
|
46
|
+
# assert_equal source_dir("javascripts", "some", "file.txt"), @site.javascripts_dir("some", "file.txt")
|
47
|
+
# end
|
54
48
|
|
55
49
|
should "have a output_dir method" do
|
56
50
|
assert_equal output_dir("some", "path"), @site.output_dir("some", "path")
|
@@ -95,32 +89,5 @@ class TestSite < Test::Unit::TestCase
|
|
95
89
|
teardown { clear_output }
|
96
90
|
end
|
97
91
|
end
|
98
|
-
|
99
|
-
should "find only the pages set in the :pages option" do
|
100
|
-
only_pages = %w{about_us.erb feed.haml index.erb}
|
101
|
-
page_paths = Massimo::Site(:source => source_dir, :pages => only_pages).pages(true).collect { |page| page.source_path.basename }
|
102
|
-
assert_equal_arrays only_pages, page_paths
|
103
|
-
end
|
104
|
-
|
105
|
-
should "skip pages set in the :skip_pages option (as an Array)" do
|
106
|
-
skip_pages = %w{about_us.erb erb.erb erb_with_layout.erb feed.haml posts/first-post.haml haml.haml html.html index.erb markdown.markdown}
|
107
|
-
page_paths = Massimo::Site(:source => source_dir, :skip_pages => skip_pages).pages(true).collect { |page| page.source_path.basename }
|
108
|
-
assert_equal_arrays [
|
109
|
-
"with_extension.haml",
|
110
|
-
"with_meta_data.haml",
|
111
|
-
"with_title.haml",
|
112
|
-
"with_url.haml",
|
113
|
-
"without_extension.haml",
|
114
|
-
"without_meta_data.haml",
|
115
|
-
"without_title.haml",
|
116
|
-
"without_url.haml"
|
117
|
-
], page_paths
|
118
|
-
end
|
119
|
-
|
120
|
-
should "skip pages set in the :skip_pages option (as a Proc)" do
|
121
|
-
site_options = { :source => source_dir, :skip_pages => lambda { |file| file.include?("with") } }
|
122
|
-
page_paths = Massimo::Site(site_options).pages(true).collect { |page| page.source_path.basename }
|
123
|
-
assert_equal_arrays %w{about_us.erb erb.erb feed.haml first-post.haml haml.haml html.html index.erb markdown.markdown}, page_paths
|
124
|
-
end
|
125
92
|
|
126
93
|
end
|
data/test/test_view.rb
CHANGED
@@ -42,5 +42,9 @@ class TestView < Test::Unit::TestCase
|
|
42
42
|
@view.new_data = "test"
|
43
43
|
assert_equal "test", @view.new_data
|
44
44
|
end
|
45
|
+
|
46
|
+
should "still raise NoMethodError when accessing non-existent meta_data properties" do
|
47
|
+
assert_raise(::NoMethodError) { @view.non_existent_prop }
|
48
|
+
end
|
45
49
|
end
|
46
50
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: massimo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Browne
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-09 00:00:00 -06:00
|
13
13
|
default_executable: massimo
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.3.
|
53
|
+
version: 0.3.29
|
54
54
|
version:
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: directory_watcher
|
@@ -83,7 +83,7 @@ dependencies:
|
|
83
83
|
version: 1.0.1
|
84
84
|
version:
|
85
85
|
description: Massimo builds HTML, Javascript, and CSS Files from your source.
|
86
|
-
email:
|
86
|
+
email: me@petebrowne.com
|
87
87
|
executables:
|
88
88
|
- massimo
|
89
89
|
extensions: []
|
@@ -104,7 +104,9 @@ files:
|
|
104
104
|
- lib/massimo/helpers.rb
|
105
105
|
- lib/massimo/javascript.rb
|
106
106
|
- lib/massimo/page.rb
|
107
|
-
- lib/massimo/resource.rb
|
107
|
+
- lib/massimo/resource/base.rb
|
108
|
+
- lib/massimo/resource/collection.rb
|
109
|
+
- lib/massimo/resource/processing.rb
|
108
110
|
- lib/massimo/site.rb
|
109
111
|
- lib/massimo/stylesheet.rb
|
110
112
|
- lib/massimo/templates.rb
|
@@ -144,6 +146,7 @@ files:
|
|
144
146
|
- test/source/views/with_helper.haml
|
145
147
|
- test/source/views/with_locals.haml
|
146
148
|
- test/source/views/without_locals.haml
|
149
|
+
- test/test_helpers.rb
|
147
150
|
- test/test_javascript.rb
|
148
151
|
- test/test_page.rb
|
149
152
|
- test/test_resource.rb
|
@@ -183,6 +186,7 @@ test_files:
|
|
183
186
|
- test/helper.rb
|
184
187
|
- test/source/helpers/test_helper.rb
|
185
188
|
- test/source/lib/site.rb
|
189
|
+
- test/test_helpers.rb
|
186
190
|
- test/test_javascript.rb
|
187
191
|
- test/test_page.rb
|
188
192
|
- test/test_resource.rb
|
data/lib/massimo/resource.rb
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
module Massimo
|
2
|
-
class Resource
|
3
|
-
attr_reader :source_path, :body
|
4
|
-
|
5
|
-
# Creates a new page associated with the given file path.
|
6
|
-
def initialize(source_path)
|
7
|
-
@source_path = ::Pathname.new(source_path)
|
8
|
-
# read and parse the source file
|
9
|
-
self.read_source!
|
10
|
-
end
|
11
|
-
|
12
|
-
# Renders the page using the registered filters.
|
13
|
-
def render(locals = {})
|
14
|
-
@body
|
15
|
-
end
|
16
|
-
|
17
|
-
# Gets the resource's file name.
|
18
|
-
def file_name
|
19
|
-
@source_path.basename.to_s
|
20
|
-
end
|
21
|
-
|
22
|
-
# Gets the resource type, based on the file's extension
|
23
|
-
def resource_type
|
24
|
-
@source_path.extname.to_s[1..-1]
|
25
|
-
end
|
26
|
-
|
27
|
-
# Gets the site instance
|
28
|
-
def site
|
29
|
-
::Massimo::Site()
|
30
|
-
end
|
31
|
-
|
32
|
-
protected
|
33
|
-
|
34
|
-
# Reads the source page file, and populates the meta_data and
|
35
|
-
# body attributes.
|
36
|
-
def read_source!
|
37
|
-
raise ::Massimo::MissingResource unless @source_path.exist?
|
38
|
-
# try to read it now
|
39
|
-
begin
|
40
|
-
@line = 1
|
41
|
-
@body = @source_path.read
|
42
|
-
rescue
|
43
|
-
raise ::Massimo::InvalidResource
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
# Get the options from the Site's config for the current resource type.
|
48
|
-
def options_for_resource_type
|
49
|
-
self.site.options[self.resource_type.to_sym]
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|