massimo 0.10.0 → 0.10.1
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 +1 -1
- data/lib/massimo/config.rb +5 -4
- data/lib/massimo/page.rb +26 -20
- data/lib/massimo/version.rb +1 -1
- data/lib/massimo.rb +0 -0
- data/spec/massimo/config_spec.rb +5 -0
- data/spec/massimo/stylesheet_spec.rb +23 -0
- metadata +3 -3
data/README.md
CHANGED
@@ -12,7 +12,7 @@ Features
|
|
12
12
|
* Uses familiar helper methods from [Padrino::Helpers](http://github.com/padrino/padrino-framework)
|
13
13
|
* Supports custom helper methods like [Rails](http://rubyonrails.org/) and [Sinatra](http://www.sinatrarb.com/)
|
14
14
|
* Concats javascripts using [Sprockets](http://getsprockets.org/)
|
15
|
-
and then compresses them using whichever library you want
|
15
|
+
and then compresses them using whichever library you want
|
16
16
|
* Renders stylesheets using either [Sass](http://sass-lang.com/) or [Less](http://lesscss.org/)
|
17
17
|
* Automatically creates pretty URLs
|
18
18
|
|
data/lib/massimo/config.rb
CHANGED
@@ -30,7 +30,8 @@ module Massimo
|
|
30
30
|
CSS_COMPRESSORS = {
|
31
31
|
:cssmin => Crush::CSSMin,
|
32
32
|
:rainpress => Crush::Rainpress,
|
33
|
-
:yui => Crush::YUI::CssCompressor
|
33
|
+
:yui => Crush::YUI::CssCompressor,
|
34
|
+
:sass => Crush::Sass::Engine
|
34
35
|
}
|
35
36
|
|
36
37
|
# Creates a new configuration. Takes either a hash of options
|
@@ -94,7 +95,7 @@ module Massimo
|
|
94
95
|
#
|
95
96
|
# @param [Hash] options The hash of options to use.
|
96
97
|
def js_compressor_options=(options)
|
97
|
-
self.
|
98
|
+
self.js_options = options
|
98
99
|
end
|
99
100
|
|
100
101
|
# Sets up Massimo to compress CSS files. By default,
|
@@ -122,7 +123,7 @@ module Massimo
|
|
122
123
|
#
|
123
124
|
# @param [Hash] options The hash of options to use.
|
124
125
|
def css_compressor_options=(options)
|
125
|
-
self.
|
126
|
+
self.css_options = options
|
126
127
|
end
|
127
128
|
|
128
129
|
# Get a full, expanded path for the given resource name. This is either set
|
@@ -150,7 +151,7 @@ module Massimo
|
|
150
151
|
# this is how we get the options set for Haml or Sass during processing.
|
151
152
|
def options_for(lib_name)
|
152
153
|
return options_for("sass") if lib_name == "scss"
|
153
|
-
send(lib_name) || {}
|
154
|
+
send("#{lib_name}_options") || send(lib_name) || {}
|
154
155
|
end
|
155
156
|
end
|
156
157
|
end
|
data/lib/massimo/page.rb
CHANGED
@@ -6,6 +6,16 @@ require 'yaml'
|
|
6
6
|
|
7
7
|
module Massimo
|
8
8
|
class Page < Resource
|
9
|
+
FRONT_MATTER_PARSER = /
|
10
|
+
(
|
11
|
+
\A\s* # Beginning of file
|
12
|
+
^---\s*$\n* # Start YAML Block
|
13
|
+
(.*?)\n* # YAML data
|
14
|
+
^---\s*$\n* # End YAML Block
|
15
|
+
)
|
16
|
+
(.*) # Rest of File
|
17
|
+
/mx
|
18
|
+
|
9
19
|
def render
|
10
20
|
output = super
|
11
21
|
|
@@ -54,32 +64,28 @@ module Massimo
|
|
54
64
|
end
|
55
65
|
|
56
66
|
def read_source
|
67
|
+
super
|
68
|
+
|
57
69
|
case source_path.extname
|
58
70
|
when '.yml', '.yaml'
|
59
|
-
@meta_data =
|
71
|
+
@meta_data = load_yaml_data @content
|
60
72
|
@content = @meta_data[:content] || ''
|
61
73
|
else
|
62
|
-
@
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
source_path.open do |file|
|
68
|
-
file.each do |line|
|
69
|
-
if line =~ /\A---\s*\Z/
|
70
|
-
front_matter = !front_matter
|
71
|
-
else
|
72
|
-
if front_matter
|
73
|
-
meta_data << line
|
74
|
-
else
|
75
|
-
@line ||= file.lineno
|
76
|
-
@content << line
|
77
|
-
end
|
78
|
-
end
|
79
|
-
end
|
74
|
+
if FRONT_MATTER_PARSER.match @content
|
75
|
+
@line = $1.lines.count + 1
|
76
|
+
@meta_data = load_yaml_data $2
|
77
|
+
@content = $3
|
80
78
|
end
|
79
|
+
end
|
81
80
|
|
82
|
-
|
81
|
+
@meta_data ||= {}
|
82
|
+
end
|
83
|
+
|
84
|
+
def load_yaml_data(data)
|
85
|
+
begin
|
86
|
+
(YAML.load(data) || {}).symbolize_keys
|
87
|
+
rescue => e
|
88
|
+
raise "Error loading front matter from #{source_path}: #{e.message}"
|
83
89
|
end
|
84
90
|
end
|
85
91
|
|
data/lib/massimo/version.rb
CHANGED
data/lib/massimo.rb
CHANGED
File without changes
|
data/spec/massimo/config_spec.rb
CHANGED
@@ -79,6 +79,11 @@ describe Massimo::Config do
|
|
79
79
|
|
80
80
|
describe '#options_for' do
|
81
81
|
it 'returns the options set for the given name' do
|
82
|
+
config = Massimo::Config.new(:sass_options => { :style => :compressed })
|
83
|
+
config.options_for(:sass).should == { :style => :compressed }
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'returns the options set with the alternate syntax' do
|
82
87
|
config = Massimo::Config.new(:sass => { :style => :compressed })
|
83
88
|
config.options_for(:sass).should == { :style => :compressed }
|
84
89
|
end
|
@@ -159,5 +159,28 @@ describe Massimo::Stylesheet do
|
|
159
159
|
end
|
160
160
|
end
|
161
161
|
end
|
162
|
+
|
163
|
+
context 'using :sass' do
|
164
|
+
it 'compresses using Sass::Engine' do
|
165
|
+
Massimo.config.css_compressor = :sass
|
166
|
+
with_file 'stylesheets/main.css', code do
|
167
|
+
compressor = mock!.render { '' }
|
168
|
+
mock_module('Sass::Engine').new(code, :style => :compressed, :syntax => :scss) { compressor }
|
169
|
+
stylesheet.render
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
context 'with configuration' do
|
174
|
+
it 'passes configuration to Sass::Engine' do
|
175
|
+
Massimo.config.css_compressor = :sass
|
176
|
+
Massimo.config.css_compressor_options = { :cache => false }
|
177
|
+
with_file 'stylesheets/main.css', code do
|
178
|
+
compressor = mock!.render { '' }
|
179
|
+
mock_module('Sass::Engine').new(code, :style => :compressed, :syntax => :scss, :cache => false) { compressor }
|
180
|
+
stylesheet.render
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
162
185
|
end
|
163
186
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: massimo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 53
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 10
|
9
|
-
-
|
10
|
-
version: 0.10.
|
9
|
+
- 1
|
10
|
+
version: 0.10.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Pete Browne
|