zassets 0.1.13 → 0.2.0.pre

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.
@@ -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