less-rails 2.0.1 → 2.0.2

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 CHANGED
@@ -2,3 +2,5 @@
2
2
  .bundle
3
3
  Gemfile.lock
4
4
  pkg/*
5
+ *.log
6
+ tmp/*
data/CHANGELOG.md CHANGED
@@ -1,19 +1,26 @@
1
1
  CHANGELOG
2
2
  =========
3
3
 
4
- 2.0.1 (Sept 28, 2011)
5
- ---------------------
4
+ 2.0.2 - 10/09/2011
5
+ ------------------
6
+ * Extend LESS with Rails asset pipeline helpers.
7
+ * New testing support with MiniTest::Spec and dummy Rails::Application.
8
+ * New config.options hash passed down to the #to_css method.
9
+
10
+
11
+ 2.0.1 - 09/28/2011
12
+ ------------------
6
13
 
7
14
  * Fix require of less/rails/railtie.rb. Thanks Benoit Bénézech (bbenezech).
8
15
 
9
16
 
10
- 2.0.0 (Sept 25, 2011)
11
- ---------------------
17
+ 2.0.0 - 09/25/2011
18
+ ------------------
12
19
 
13
20
  * Initial 2.0 release. Heavily inspired/copied code from sass-rails.
14
21
 
15
22
 
16
- 1.0.0 (Feb 2, 2010)
17
- -------------------
23
+ 1.0.0 - 02/02/2010
24
+ ------------------
18
25
 
19
26
  * Original project at http://github.com/yeastymobs/less-rails
data/Gemfile CHANGED
@@ -2,3 +2,9 @@ source :rubygems
2
2
 
3
3
  gemspec
4
4
 
5
+ group :test do
6
+ if RUBY_PLATFORM =~ /darwin/
7
+ gem 'rb-fsevent'
8
+ gem 'growl'
9
+ end
10
+ end
data/Guardfile ADDED
@@ -0,0 +1,7 @@
1
+ guard 'minitest' do
2
+ watch(%r|^lib/less/rails/(.*)\.rb|) { |m| "test/cases/#{m[1]}_spec.rb" }
3
+ # watch(%r|^lib/less/rails\.rb|) { "test/cases" }
4
+ # watch(%r|^test/dummy_app/.*|) { "test/cases" }
5
+ watch(%r|^test/spec_helper\.rb|) { "test/cases" }
6
+ watch(%r|^test/cases/(.*)_spec\.rb|)
7
+ end
data/README.md CHANGED
@@ -17,9 +17,43 @@ This gem was made for other gems to properly hook into one place to provide path
17
17
  ```ruby
18
18
  MyProject::Application.configure do
19
19
  config.less.paths << "#{Rails.root}/lib/less/stylesheets"
20
+ config.less.compress = true
20
21
  end
21
22
  ```
22
23
 
24
+
25
+ ## Helpers
26
+
27
+ When referencing assets use the following helpers in LESS.
28
+
29
+ ```css
30
+ asset-path(@relative-asset-path) /* Returns a string to the asset. */
31
+ asset-path("rails.png") /* Becomes: "/assets/rails.png" */
32
+
33
+ asset-url(@relative-asset-path) /* Returns url reference to the asset. */
34
+ asset-url("rails.png") /* Becomes: url(/assets/rails.png) */
35
+ ```
36
+
37
+ As a convenience, for each of the following asset classes there are corresponding `-path` and `-url` helpers image, font, video, audio, javascript and stylesheet. The following examples only show the `-url` variants since you get the idea of the `-path` ones above.
38
+
39
+ ```css
40
+ image-url("rails.png") /* Becomes: url(/assets/rails.png) */
41
+ font-url("rails.ttf") /* Becomes: url(/assets/rails.ttf) */
42
+ video-url("rails.ttf") /* Becomes: url(/videos/rails.mp4) */
43
+ audio-url("rails.ttf") /* Becomes: url(/audios/rails.mp3) */
44
+ javascript-url("rails.js") /* Becomes: url(/assets/rails.js) */
45
+ stylesheet-url("rails.css") /* Becomes: url(/assets/rails.css) */
46
+ ```
47
+
48
+ Lastly, we provide a data url method for base64 encoding assets.
49
+
50
+ ```css
51
+ asset-data-url("rails.png") /* Becomes: url(data:image/png;base64,iVBORw0K...) */
52
+ ```
53
+
54
+ Please note that these helpers are only available server-side, and something like ERB templates should be used if client-side rendering is desired.
55
+
56
+
23
57
  ## License
24
58
 
25
59
  Less::Rails is Copyright (c) 2011 Ken Collins, <ken@metaskills.net> and is distributed under the MIT license.
data/Rakefile CHANGED
@@ -1 +1,14 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler'
2
+ require 'rake/testtask'
3
+
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ Rake::TestTask.new do |t|
7
+ t.libs = ['lib','test']
8
+ t.test_files = Dir.glob("test/**/*_spec.rb").sort
9
+ t.verbose = true
10
+ end
11
+
12
+ task :default => [:test]
13
+ task :spec => [:test]
14
+
data/less-rails.gemspec CHANGED
@@ -15,8 +15,8 @@ Gem::Specification.new do |s|
15
15
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
16
  s.require_paths = ["lib"]
17
17
  s.add_runtime_dependency 'less', '~> 2.0.7'
18
- s.add_runtime_dependency 'railties', '~> 3.1.0'
19
- s.add_runtime_dependency 'actionpack', '~> 3.1.0'
20
- # s.add_development_dependency 'minitest'
21
- # s.add_development_dependency 'combustion', '~> 0.3.1'
18
+ s.add_runtime_dependency 'actionpack', '~> 3.1.1'
19
+ s.add_development_dependency 'minitest'
20
+ s.add_development_dependency 'guard-minitest'
21
+ s.add_development_dependency 'rails', '~> 3.1.1'
22
22
  end
@@ -0,0 +1,116 @@
1
+ module Less
2
+
3
+ def self.less
4
+ @less
5
+ end
6
+
7
+ def self.register_rails_helper(name, &block)
8
+ tree = @loader.require('less/tree')
9
+ tree.functions[name] = lambda do |node|
10
+ tree[:Anonymous].new block.call(tree, node)
11
+ end
12
+ end
13
+
14
+ module Rails
15
+ module Helpers
16
+
17
+ extend ActiveSupport::Concern
18
+
19
+ included do
20
+ Less.register_rails_helper('asset-path') { |tree, cxt| asset_path unquote(cxt.toCSS()) }
21
+ Less.register_rails_helper('asset-url') { |tree, cxt| asset_url unquote(cxt.toCSS()) }
22
+ Less.register_rails_helper('image-path') { |tree, cxt| image_path unquote(cxt.toCSS()) }
23
+ Less.register_rails_helper('image-url') { |tree, cxt| image_url unquote(cxt.toCSS()) }
24
+ Less.register_rails_helper('video-path') { |tree, cxt| video_path unquote(cxt.toCSS()) }
25
+ Less.register_rails_helper('video-url') { |tree, cxt| video_url unquote(cxt.toCSS()) }
26
+ Less.register_rails_helper('audio-path') { |tree, cxt| audio_path unquote(cxt.toCSS()) }
27
+ Less.register_rails_helper('audio-url') { |tree, cxt| audio_url unquote(cxt.toCSS()) }
28
+ Less.register_rails_helper('javascript-path') { |tree, cxt| javascript_path unquote(cxt.toCSS()) }
29
+ Less.register_rails_helper('javascript-url') { |tree, cxt| javascript_url unquote(cxt.toCSS()) }
30
+ Less.register_rails_helper('stylesheet-path') { |tree, cxt| stylesheet_path unquote(cxt.toCSS()) }
31
+ Less.register_rails_helper('stylesheet-url') { |tree, cxt| stylesheet_url unquote(cxt.toCSS()) }
32
+ Less.register_rails_helper('font-path') { |tree, cxt| asset_path unquote(cxt.toCSS()) }
33
+ Less.register_rails_helper('font-url') { |tree, cxt| asset_url unquote(cxt.toCSS()) }
34
+ Less.register_rails_helper('asset-data-url') { |tree, cxt| asset_data_url unquote(cxt.toCSS()) }
35
+ end
36
+
37
+ module ClassMethods
38
+
39
+ def asset_data_url(path)
40
+ "url(#{scope.asset_data_uri(path)})"
41
+ end
42
+
43
+ def asset_path(asset)
44
+ public_path(asset).inspect
45
+ end
46
+
47
+ def asset_url(asset)
48
+ "url(#{public_path(asset)})"
49
+ end
50
+
51
+ def image_path(img)
52
+ scope.image_path(img).inspect
53
+ end
54
+
55
+ def image_url(img)
56
+ "url(#{scope.image_path(img)})"
57
+ end
58
+
59
+ def video_path(video)
60
+ scope.video_path(video).inspect
61
+ end
62
+
63
+ def video_url(video)
64
+ "url(#{scope.video_path(video)})"
65
+ end
66
+
67
+ def audio_path(audio)
68
+ scope.audio_path(audio).inspect
69
+ end
70
+
71
+ def audio_url(audio)
72
+ "url(#{scope.audio_path(audio)})"
73
+ end
74
+
75
+ def javascript_path(javascript)
76
+ scope.javascript_path(javascript).inspect
77
+ end
78
+
79
+ def javascript_url(javascript)
80
+ "url(#{scope.javascript_path(javascript)})"
81
+ end
82
+
83
+ def stylesheet_path(stylesheet)
84
+ scope.stylesheet_path(stylesheet).inspect
85
+ end
86
+
87
+ def stylesheet_url(stylesheet)
88
+ "url(#{scope.stylesheet_path(stylesheet)})"
89
+ end
90
+
91
+
92
+ private
93
+
94
+ def scope
95
+ Less.Parser['scope']
96
+ end
97
+
98
+ def public_path(asset)
99
+ scope.asset_paths.compute_public_path asset, ::Rails.application.config.assets.prefix
100
+ end
101
+
102
+ def context_asset_data_uri(path)
103
+
104
+ end
105
+
106
+ def unquote(str)
107
+ s = str.to_s.strip
108
+ s =~ /^['"](.*?)['"]$/ ? $1 : s
109
+ end
110
+
111
+ end
112
+
113
+ end
114
+ end
115
+ end
116
+
@@ -7,19 +7,21 @@ module Less
7
7
  end
8
8
 
9
9
  config.less = ActiveSupport::OrderedOptions.new
10
-
11
10
  config.less.paths = []
11
+ config.less.compress = false
12
12
 
13
13
  config.before_initialize do |app|
14
- unless app.config.assets && app.config.assets.enabled
15
- raise "The less-rails plugin requires the asset pipeline to be enabled."
16
- end
17
14
  require 'less'
15
+ require 'less-rails'
18
16
  Sprockets::Engines #force autoloading
19
17
  Sprockets.register_engine '.less', Less::Rails::LessTemplate
20
18
  end
21
19
 
22
- initializer 'less-rails.setup' do |app|
20
+ initializer 'less-rails.before.load_config_initializers', :before => 'load_config_initializers', :group => :all do |app|
21
+ raise 'The less-rails plugin requires the asset pipeline to be enabled.' unless app.config.assets.enabled
22
+ end
23
+
24
+ initializer 'less-rails.after.load_config_initializers', :after => 'load_config_initializers', :group => :all do |app|
23
25
  app.assets.context_class.extend(LessContext)
24
26
  app.assets.context_class.less_config = app.config.less
25
27
  end
@@ -27,3 +29,4 @@ module Less
27
29
  end
28
30
  end
29
31
  end
32
+
@@ -1,35 +1,42 @@
1
- require 'tilt'
2
- require 'sprockets'
3
-
4
1
  module Less
5
- module Rails
6
-
2
+ module Rails
7
3
  class LessTemplate < Tilt::LessTemplate
8
4
 
5
+ include Helpers
6
+
7
+ TO_CSS_KEYS = [:compress, :optimization, :silent, :color]
8
+
9
9
  def prepare
10
10
  end
11
11
 
12
12
  def evaluate(scope, locals, &block)
13
13
  @output ||= begin
14
- parser = ::Less::Parser.new less_parser_options(scope)
14
+ Less.Parser['scope'] = scope
15
+ parser = ::Less::Parser.new config_to_less_parser_options(scope)
15
16
  engine = parser.parse(data)
16
- engine.to_css
17
+ engine.to_css config_to_css_options(scope)
17
18
  end
18
19
  end
19
20
 
20
21
  protected
21
22
 
22
- def less_options_from_rails(scope)
23
- scope.environment.context_class.less_config
24
- end
25
-
26
- def less_parser_options(scope)
27
- less_options = less_options_from_rails(scope)
28
- paths = less_options[:paths] + scope.environment.paths
23
+ def config_to_less_parser_options(scope)
24
+ paths = config_paths(scope) + scope.environment.paths
29
25
  {:filename => eval_file, :line => line, :paths => paths}
30
26
  end
31
27
 
32
- end
33
-
28
+ def config_to_css_options(scope)
29
+ Hash[config_from_rails(scope).each.to_a].slice *TO_CSS_KEYS
30
+ end
31
+
32
+ def config_paths(scope)
33
+ config_from_rails(scope)[:paths]
34
+ end
35
+
36
+ def config_from_rails(scope)
37
+ scope.environment.context_class.less_config
38
+ end
39
+
40
+ end
34
41
  end
35
42
  end
@@ -1,5 +1,5 @@
1
1
  module Less
2
2
  module Rails
3
- VERSION = "2.0.1"
3
+ VERSION = "2.0.2"
4
4
  end
5
5
  end
data/lib/less/rails.rb CHANGED
@@ -3,6 +3,13 @@ module Less
3
3
  end
4
4
  end
5
5
 
6
+ require 'less'
7
+ require 'rails'
8
+ require 'tilt'
9
+ require 'sprockets'
10
+ require 'sprockets/railtie'
11
+
6
12
  require 'less/rails/version'
13
+ require 'less/rails/helpers'
7
14
  require 'less/rails/template_handlers'
8
15
  require 'less/rails/railtie'
data/lib/less-rails.rb CHANGED
@@ -1,2 +1,2 @@
1
- require "less/rails"
1
+ require 'less/rails'
2
2
 
@@ -0,0 +1,16 @@
1
+ require 'spec_helper'
2
+
3
+ class BasicsSpec < Less::Rails::Spec
4
+
5
+ let(:basics) { dummy_asset('basics') }
6
+
7
+ it 'must render variables' do
8
+ basics.must_match %r{#test-variable\{color:#4d926f;\}}
9
+ end
10
+
11
+ it 'must render mixins' do
12
+ basics.must_match %r{#test-mixin span\{border:1px solid black;\}}
13
+ end
14
+
15
+
16
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ class HelpersSpec < Less::Rails::Spec
4
+
5
+ before { dummy_config.less.compress = false }
6
+
7
+ let(:helpers) { dummy_asset('helpers') }
8
+
9
+ it 'parse asset paths' do
10
+ line_for_helper('asset-path').must_equal 'asset-path: "/assets/rails.png";'
11
+ line_for_helper('asset-url').must_equal "asset-url: url(/assets/rails.png);"
12
+ line_for_helper('image-path').must_equal 'image-path: "/assets/rails.png";'
13
+ line_for_helper('image-url').must_equal "image-url: url(/assets/rails.png);"
14
+ line_for_helper('video-path').must_equal 'video-path: "/videos/rails.mp4";'
15
+ line_for_helper('video-url').must_equal "video-url: url(/videos/rails.mp4);"
16
+ line_for_helper('audio-path').must_equal 'audio-path: "/audios/rails.mp3";'
17
+ line_for_helper('audio-url').must_equal "audio-url: url(/audios/rails.mp3);"
18
+ line_for_helper('javascript-path').must_equal 'javascript-path: "/assets/rails.js";'
19
+ line_for_helper('javascript-url').must_equal "javascript-url: url(/assets/rails.js);"
20
+ line_for_helper('stylesheet-path').must_equal 'stylesheet-path: "/assets/rails.css";'
21
+ line_for_helper('stylesheet-url').must_equal "stylesheet-url: url(/assets/rails.css);"
22
+ line_for_helper('font-path').must_equal 'font-path: "/assets/rails.ttf";'
23
+ line_for_helper('font-url').must_equal "font-url: url(/assets/rails.ttf);"
24
+ end
25
+
26
+ it 'parses data urls ' do
27
+ line = line_for_helper('asset-data-url')
28
+ asset_data_url_regexp = %r{asset-data-url: url\((.*?)\)}
29
+ line.must_match asset_data_url_regexp
30
+ asset_data_url_match = line.match(asset_data_url_regexp)[1]
31
+ asset_data_url_expected = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw%2FeHBhY2tldCBiZWdpbj0i77u%2FIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8%2BIDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpCNzY5NDE1QkQ2NkMxMUUwOUUzM0E5Q0E2RTgyQUExQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpCNzY5NDE1Q0Q2NkMxMUUwOUUzM0E5Q0E2RTgyQUExQiI%2BIDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE3MzcyNTQ2RDY2QjExRTA5RTMzQTlDQTZFODJBQTFCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkI3Njk0MTVBRDY2QzExRTA5RTMzQTlDQTZFODJBQTFCIi8%2BIDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY%2BIDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8%2B0HhJ9AAAABBJREFUeNpi%2BP%2F%2FPwNAgAEACPwC%2FtuiTRYAAAAASUVORK5CYII%3D"
32
+ asset_data_url_match.must_equal asset_data_url_expected
33
+ end
34
+
35
+
36
+ private
37
+
38
+ def line_for_helper(name)
39
+ helpers.each_line.detect{ |line| line.include? name }.strip
40
+ end
41
+
42
+ end
@@ -0,0 +1,40 @@
1
+ require 'spec_helper'
2
+
3
+ class RailtieSpec < Less::Rails::Spec
4
+
5
+ describe 'config' do
6
+
7
+ it 'must have a less ordered hash' do
8
+ dummy_config.less.must_be_instance_of ActiveSupport::OrderedOptions
9
+ end
10
+
11
+ it 'must have an empty array for paths' do
12
+ dummy_config.less.paths.must_equal Array.new
13
+ end
14
+
15
+ it 'must have an options hash passed down to the #to_css method' do
16
+ basic_compressed_match = /#test-variable\{color:#4d926f;\}/
17
+ dummy_config.less.compress = true
18
+ dummy_asset('basics').must_match basic_compressed_match
19
+ reset_caches
20
+ dummy_config.less.compress = false
21
+ dummy_asset('basics').wont_match basic_compressed_match
22
+ end
23
+
24
+ end
25
+
26
+ describe 'initialization' do
27
+
28
+ it 'must register our template engine' do
29
+ dummy_assets.engines['.less'].must_equal Less::Rails::LessTemplate
30
+ end
31
+
32
+ it 'must extend the context class with our config' do
33
+ dummy_assets.context_class.must_respond_to :less_config
34
+ dummy_assets.context_class.less_config.must_equal dummy_config.less
35
+ end
36
+
37
+ end
38
+
39
+
40
+ end
@@ -0,0 +1,11 @@
1
+
2
+ // Variables
3
+
4
+ @color: #4D926F;
5
+ #test-variable { color: @color; }
6
+
7
+ // Mixins
8
+
9
+ .bordered { border: 1px solid black; }
10
+ #test-mixin span { .bordered; }
11
+
@@ -0,0 +1,19 @@
1
+
2
+ .rails {
3
+ asset-path: asset-path("rails.png");
4
+ asset-url: asset-url("rails.png");
5
+ image-path: image-path("rails.png");
6
+ image-url: image-url("rails.png");
7
+ video-path: video-path("rails.mp4");
8
+ video-url: video-url("rails.mp4");
9
+ audio-path: audio-path("rails.mp3");
10
+ audio-url: audio-url("rails.mp3");
11
+ font-path: font-path("rails.ttf");
12
+ font-url: font-url("rails.ttf");
13
+ javascript-path: javascript-path("rails.js");
14
+ javascript-url: javascript-url("rails.js");
15
+ stylesheet-path: stylesheet-path("rails.css");
16
+ stylesheet-url: stylesheet-url("rails.css");
17
+ asset-data-url: asset-data-url("1x1.png");
18
+ }
19
+
@@ -0,0 +1,21 @@
1
+ require 'sprockets/railtie'
2
+ require 'action_controller/railtie'
3
+ require 'action_view/railtie'
4
+ require 'action_view/base'
5
+ require 'action_controller/base'
6
+
7
+ module Dummy
8
+ class Application < ::Rails::Application
9
+
10
+ config.root = File.join __FILE__, '..'
11
+ config.active_support.deprecation = :stderr
12
+ config.cache_store = :memory_store
13
+ config.consider_all_requests_local = true
14
+
15
+ config.assets.enabled = true
16
+ config.assets.cache_store = config.cache_store
17
+
18
+ end
19
+ end
20
+
21
+ Dummy::Application.initialize!
@@ -0,0 +1,50 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.require
4
+ require 'less/rails'
5
+ require 'minitest/spec'
6
+ require 'minitest/autorun'
7
+ require 'dummy_app/init'
8
+
9
+ module Less
10
+ module Rails
11
+ class Spec < MiniTest::Spec
12
+
13
+ before do
14
+ reset_config_options
15
+ reset_caches
16
+ end
17
+
18
+
19
+ private
20
+
21
+ def dummy_app
22
+ Dummy::Application
23
+ end
24
+
25
+ def dummy_config
26
+ dummy_app.config
27
+ end
28
+
29
+ def dummy_assets
30
+ dummy_app.assets
31
+ end
32
+
33
+ def dummy_asset(name)
34
+ dummy_assets[name].to_s.strip
35
+ end
36
+
37
+ def reset_config_options
38
+ dummy_config.less.paths = []
39
+ dummy_config.less.compress = true
40
+ end
41
+
42
+ def reset_caches
43
+ dummy_assets.version = SecureRandom.hex(32)
44
+ dummy_assets.cache.clear
45
+ end
46
+
47
+ end
48
+ end
49
+ end
50
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: less-rails
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 2
8
8
  - 0
9
- - 1
10
- version: 2.0.1
9
+ - 2
10
+ version: 2.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ken Collins
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-09-28 00:00:00 -04:00
18
+ date: 2011-10-09 00:00:00 -04:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -35,37 +35,65 @@ dependencies:
35
35
  type: :runtime
36
36
  version_requirements: *id001
37
37
  - !ruby/object:Gem::Dependency
38
- name: railties
38
+ name: actionpack
39
39
  prerelease: false
40
40
  requirement: &id002 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ~>
44
44
  - !ruby/object:Gem::Version
45
- hash: 3
45
+ hash: 1
46
46
  segments:
47
47
  - 3
48
48
  - 1
49
- - 0
50
- version: 3.1.0
49
+ - 1
50
+ version: 3.1.1
51
51
  type: :runtime
52
52
  version_requirements: *id002
53
53
  - !ruby/object:Gem::Dependency
54
- name: actionpack
54
+ name: minitest
55
55
  prerelease: false
56
56
  requirement: &id003 !ruby/object:Gem::Requirement
57
57
  none: false
58
58
  requirements:
59
- - - ~>
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  hash: 3
62
62
  segments:
63
- - 3
64
- - 1
65
63
  - 0
66
- version: 3.1.0
67
- type: :runtime
64
+ version: "0"
65
+ type: :development
68
66
  version_requirements: *id003
67
+ - !ruby/object:Gem::Dependency
68
+ name: guard-minitest
69
+ prerelease: false
70
+ requirement: &id004 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ hash: 3
76
+ segments:
77
+ - 0
78
+ version: "0"
79
+ type: :development
80
+ version_requirements: *id004
81
+ - !ruby/object:Gem::Dependency
82
+ name: rails
83
+ prerelease: false
84
+ requirement: &id005 !ruby/object:Gem::Requirement
85
+ none: false
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ hash: 1
90
+ segments:
91
+ - 3
92
+ - 1
93
+ - 1
94
+ version: 3.1.1
95
+ type: :development
96
+ version_requirements: *id005
69
97
  description: The dynamic stylesheet language for the Rails asset pipeline.
70
98
  email:
71
99
  - ken@metaskills.net
@@ -79,15 +107,26 @@ files:
79
107
  - .gitignore
80
108
  - CHANGELOG.md
81
109
  - Gemfile
110
+ - Guardfile
82
111
  - MIT-LICENSE
83
112
  - README.md
84
113
  - Rakefile
85
114
  - less-rails.gemspec
86
115
  - lib/less-rails.rb
87
116
  - lib/less/rails.rb
117
+ - lib/less/rails/helpers.rb
88
118
  - lib/less/rails/railtie.rb
89
119
  - lib/less/rails/template_handlers.rb
90
120
  - lib/less/rails/version.rb
121
+ - test/cases/basics_spec.rb
122
+ - test/cases/helpers_spec.rb
123
+ - test/cases/railtie_spec.rb
124
+ - test/dummy_app/app/assets/images/1x1.png
125
+ - test/dummy_app/app/assets/images/rails.png
126
+ - test/dummy_app/app/assets/stylesheets/basics.css.less
127
+ - test/dummy_app/app/assets/stylesheets/helpers.css.less
128
+ - test/dummy_app/init.rb
129
+ - test/spec_helper.rb
91
130
  has_rdoc: true
92
131
  homepage: http://github.com/metaskills/less-rails
93
132
  licenses: []
@@ -122,5 +161,13 @@ rubygems_version: 1.6.2
122
161
  signing_key:
123
162
  specification_version: 3
124
163
  summary: The dynamic stylesheet language for the Rails asset pipeline.
125
- test_files: []
126
-
164
+ test_files:
165
+ - test/cases/basics_spec.rb
166
+ - test/cases/helpers_spec.rb
167
+ - test/cases/railtie_spec.rb
168
+ - test/dummy_app/app/assets/images/1x1.png
169
+ - test/dummy_app/app/assets/images/rails.png
170
+ - test/dummy_app/app/assets/stylesheets/basics.css.less
171
+ - test/dummy_app/app/assets/stylesheets/helpers.css.less
172
+ - test/dummy_app/init.rb
173
+ - test/spec_helper.rb