zassets 0.1.13 → 0.2.0.pre

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,6 +7,7 @@ module ZAssets
7
7
  o.merge! load_options(options[:config_file]) if options[:config_file]
8
8
  o.merge! options
9
9
  @options = o
10
+ register_plugins!
10
11
  end
11
12
 
12
13
  def default_options
@@ -15,6 +16,8 @@ module ZAssets
15
16
  :host => '::1',
16
17
  :port => 9292,
17
18
  :server => :puma,
19
+ :plugins => [],
20
+ :engines => {},
18
21
  :base_url => '/assets',
19
22
  :paths => [],
20
23
  :public_path => 'public',
@@ -31,6 +34,15 @@ module ZAssets
31
34
  options
32
35
  end
33
36
 
37
+ def register_plugins!
38
+ return unless load_plugins!
39
+
40
+ ::ZAssets::Plugins.constants.each do |plugin_module_name|
41
+ plugin_module = ::ZAssets::Plugins.const_get(plugin_module_name)
42
+ plugin_module::Registrant.new(self).register
43
+ end
44
+ end
45
+
34
46
  def [](key)
35
47
  @options[key]
36
48
  end
@@ -38,5 +50,16 @@ module ZAssets
38
50
  def []=(key, value)
39
51
  @options[key] = value
40
52
  end
53
+
54
+
55
+ private
56
+
57
+ def load_plugins!
58
+ @options[:plugins].each do |plugin|
59
+ require "zassets-plugins-#{plugin}"
60
+ end
61
+
62
+ return ::ZAssets.const_defined? :Plugins
63
+ end
41
64
  end
42
65
  end
@@ -1,9 +1,5 @@
1
1
  require 'sprockets'
2
2
 
3
- module Sprockets
4
- autoload :LessTemplate, 'sprockets/less_template'
5
- end
6
-
7
3
  module ZAssets
8
4
  class SprocketsEnv < Sprockets::Environment
9
5
  def initialize(config)
@@ -11,13 +7,9 @@ module ZAssets
11
7
 
12
8
  self.logger.level = Logger::DEBUG if config[:verbose]
13
9
 
14
- self.register_engine '.less', ::Sprockets::LessTemplate
10
+ config[:engines].each { |ext, engine| register_engine ext, engine }
15
11
 
16
12
  config[:paths].each { |p| append_path p }
17
-
18
- require 'handlebars_assets'
19
- append_path HandlebarsAssets.path
20
- self.register_engine '.hbs', ::HandlebarsAssets::TiltHandlebars
21
13
  end
22
14
  end
23
15
  end
@@ -1,3 +1,3 @@
1
1
  module ZAssets
2
- VERSION = '0.1.13'
2
+ VERSION = '0.2.0.pre'
3
3
  end
@@ -0,0 +1,17 @@
1
+ # Dummy zassets plugin for testing purpose.
2
+
3
+ module ZAssets
4
+ module Plugins
5
+ module Dummy
6
+ class Registrant
7
+ def initialize(config)
8
+ @config = config
9
+ end
10
+
11
+ def register
12
+ @config[:dummy_plugin] = :registered
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -13,6 +13,11 @@ module ZAssets
13
13
  config.instance_eval { @options }.should == config.default_options
14
14
  end
15
15
 
16
+ it 'registers plugins' do
17
+ Config.any_instance.should_receive :register_plugins!
18
+ Config.new
19
+ end
20
+
16
21
  context 'with a non-empty option hash' do
17
22
  it 'merges the option hash' do
18
23
  config = Config.new(verbose: true)
@@ -80,6 +85,20 @@ module ZAssets
80
85
  end
81
86
  end
82
87
 
88
+ describe '#register_plugins!' do
89
+ subject(:config) { Config.new(plugins: ['dummy']) }
90
+
91
+ it 'loads plugins' do
92
+ config
93
+ Plugins::Dummy.should be
94
+ end
95
+
96
+ it 'registers them with current config' do
97
+ config[:dummy_plugin].should == :registered
98
+ config = Config.new(plugins: ['dummy'])
99
+ end
100
+ end
101
+
83
102
  describe '#[]' do
84
103
  it 'returns an @options value from its key' do
85
104
  config.instance_eval { @options[:foo] = :bar }
@@ -20,11 +20,9 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_dependency 'puma', '~> 1.6'
22
22
 
23
- s.add_dependency 'therubyracer', '~> 0.11'
24
- s.add_dependency 'libv8', '~> 3.3'
23
+ s.add_dependency 'therubyracer', '~> 0.11.0beta8'
24
+ s.add_dependency 'libv8', '~> 3.3.10.4'
25
25
  s.add_dependency 'coffee-script', '2.2.0'
26
- s.add_dependency 'less', '~> 2.3'
27
- s.add_dependency 'handlebars_assets', '0.6.6'
28
26
 
29
27
  s.add_development_dependency 'rspec', '~> 2.11'
30
28
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zassets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
5
- prerelease:
4
+ version: 0.2.0.pre
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Thibault Jouan
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-06-07 00:00:00.000000000 Z
12
+ date: 2013-03-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sprockets
@@ -50,7 +50,7 @@ dependencies:
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: '0.11'
53
+ version: 0.11.0beta8
54
54
  type: :runtime
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: '0.11'
61
+ version: 0.11.0beta8
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: libv8
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ~>
68
68
  - !ruby/object:Gem::Version
69
- version: '3.3'
69
+ version: 3.3.10.4
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - ~>
76
76
  - !ruby/object:Gem::Version
77
- version: '3.3'
77
+ version: 3.3.10.4
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: coffee-script
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -91,38 +91,6 @@ dependencies:
91
91
  - - '='
92
92
  - !ruby/object:Gem::Version
93
93
  version: 2.2.0
94
- - !ruby/object:Gem::Dependency
95
- name: less
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ~>
100
- - !ruby/object:Gem::Version
101
- version: '2.3'
102
- type: :runtime
103
- prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ~>
108
- - !ruby/object:Gem::Version
109
- version: '2.3'
110
- - !ruby/object:Gem::Dependency
111
- name: handlebars_assets
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - '='
116
- - !ruby/object:Gem::Version
117
- version: 0.6.6
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - '='
124
- - !ruby/object:Gem::Version
125
- version: 0.6.6
126
94
  - !ruby/object:Gem::Dependency
127
95
  name: rspec
128
96
  requirement: !ruby/object:Gem::Requirement
@@ -154,7 +122,6 @@ files:
154
122
  - LICENSE
155
123
  - README.md
156
124
  - bin/zassets
157
- - lib/sprockets/less_template.rb
158
125
  - lib/zassets.rb
159
126
  - lib/zassets/cli.rb
160
127
  - lib/zassets/compiler.rb
@@ -170,6 +137,7 @@ files:
170
137
  - spec/fixtures/public/index.html
171
138
  - spec/spec_helper.rb
172
139
  - spec/support/fixtures_helpers.rb
140
+ - spec/zassets-plugins-dummy.rb
173
141
  - spec/zassets/cli_spec.rb
174
142
  - spec/zassets/compiler_spec.rb
175
143
  - spec/zassets/config_spec.rb
@@ -192,14 +160,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
192
160
  required_rubygems_version: !ruby/object:Gem::Requirement
193
161
  none: false
194
162
  requirements:
195
- - - ! '>='
163
+ - - ! '>'
196
164
  - !ruby/object:Gem::Version
197
- version: '0'
165
+ version: 1.3.1
198
166
  requirements: []
199
167
  rubyforge_project:
200
168
  rubygems_version: 1.8.23
201
169
  signing_key:
202
170
  specification_version: 3
203
- summary: zassets-0.1.13
171
+ summary: zassets-0.2.0.pre
204
172
  test_files: []
205
173
  has_rdoc:
@@ -1,46 +0,0 @@
1
- require 'tilt'
2
- require 'less'
3
-
4
- module Sprockets
5
- class LessTemplate < Tilt::Template
6
- self.default_mime_type = 'text/css'
7
-
8
- def self.engine_initialized?
9
- defined? ::Less
10
- end
11
-
12
- def initialize_engine
13
- require_template_library 'less'
14
- end
15
-
16
- def prepare
17
- end
18
-
19
- def evaluate(context, locals, &block)
20
- options = {
21
- :filename => eval_file,
22
- :paths => [File.dirname(eval_file)]
23
- }
24
- parser = ::Less::Parser.new(options)
25
- tree = parser.parse(data)
26
- depend_on(context, eval_file)
27
- tree.to_css
28
- rescue ::Less::ParseError => e
29
- context.__LINE__ = e.line
30
- raise e
31
- end
32
-
33
- def depend_on(context, path)
34
- parser = ::Less::Parser.new({
35
- :filename => path,
36
- :paths => [File.dirname(path)]
37
- })
38
- parser.parse(File.read(path))
39
- parser.imports.each do |i|
40
- dependency_path = File.join(File.dirname(path), i)
41
- context.depend_on(dependency_path)
42
- depend_on(context, dependency_path)
43
- end
44
- end
45
- end
46
- end