dassets-sass 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -4,4 +4,3 @@ gemspec
4
4
 
5
5
  gem 'rake'
6
6
  gem 'pry'
7
- gem 'dassets', :github => 'redding/dassets'
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # DassetsSass
1
+ # Dassets::Sass
2
2
 
3
3
  Dassets [engine](https://github.com/redding/dassets#compiling) for compiling [Sass](http://sass-lang.com/) css sources.
4
4
 
@@ -12,18 +12,26 @@ require 'dassets'
12
12
  require 'dassets-sass'
13
13
 
14
14
  Dassets.configure do |c|
15
- c.root_path '/some/root/path'
16
15
 
17
- # register for `scss` syntax
18
- c.engine 'scss', Dassets::Sass::Engine, :syntax => 'scss'
16
+ c.source "/path/to/assets") do |s|
17
+ # register for `scss` syntax
18
+ s.engine 'scss', Dassets::Sass::Engine, :syntax => 'scss'
19
19
 
20
- # register for `sass` syntax
21
- c.engine 'sass', Dassets::Sass::Engine, :syntax => 'sass'
20
+ # register for `sass` syntax
21
+ s.engine 'sass', Dassets::Sass::Engine, :syntax => 'sass'
22
+
23
+ # by default `/path/to/assets` is in the load paths, but
24
+ # you can specify additional custom load paths to use with `@import`s
25
+ s.engine 'scss', Dassets::Sass::Engine, {
26
+ :syntax => 'scss',
27
+ :load_paths => ['/custom/load/path']
28
+ }
29
+ end
22
30
 
23
31
  end
24
32
  ```
25
33
 
26
- Put your `.scss` and `.sass` source files in your source path and digest them. Dassets will compile their content using Sass, switch their extension to `.css`, and write the output to the output path.
34
+ Put your `.scss` and `.sass` source files in your source path. Dassets will compile their content using Sass, switch their extension to `.css`, and write the output to the output path.
27
35
 
28
36
  ## Installation
29
37
 
data/dassets-sass.gemspec CHANGED
@@ -11,13 +11,14 @@ Gem::Specification.new do |gem|
11
11
  gem.description = %q{Dassets engine for compiling Sass}
12
12
  gem.summary = %q{Dassets engine for compiling Sass}
13
13
  gem.homepage = "http://github.com/redding/dassets-sass"
14
+ gem.license = 'MIT'
14
15
 
15
16
  gem.files = `git ls-files`.split($/)
16
17
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
19
  gem.require_paths = ["lib"]
19
20
 
20
- gem.add_development_dependency("assert")
21
+ gem.add_development_dependency("assert", ["~> 2.12"])
21
22
 
22
23
  # lock in to Sass 3.1 and up b/c this is earliest version implementing
23
24
  # the expected `Sass.compile` api:
data/lib/dassets-sass.rb CHANGED
@@ -10,12 +10,20 @@ module Dassets::Sass
10
10
  (self.opts[:syntax] || self.opts['syntax'] || 'scss').to_s
11
11
  end
12
12
 
13
+ def load_paths
14
+ @load_paths ||= ([self.opts['source_path']] +
15
+ [*(self.opts[:load_paths] || self.opts['load_paths'] || [])])
16
+ end
17
+
13
18
  def ext(input_ext)
14
19
  'css'
15
20
  end
16
21
 
17
22
  def compile(input_content)
18
- ::Sass.compile(input_content, :syntax => self.syntax.to_sym)
23
+ ::Sass.compile(input_content, {
24
+ :syntax => self.syntax.to_sym,
25
+ :load_paths => self.load_paths
26
+ })
19
27
  end
20
28
 
21
29
  end
@@ -1,4 +1,4 @@
1
1
  module Dassets; end
2
2
  module Dassets::Sass
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
data/test/helper.rb CHANGED
@@ -8,9 +8,6 @@ $LOAD_PATH.unshift(File.expand_path("../..", __FILE__))
8
8
  require 'pry'
9
9
 
10
10
  ENV['DASSETS_TEST_MODE'] = 'yes'
11
- ENV['DASSETS_ASSETS_FILE'] = 'test/support/config/assets'
12
- require 'dassets'
13
- Dassets.init
14
11
 
15
12
  require 'test/support/factory'
16
13
  class Assert::Context
@@ -1,17 +1,20 @@
1
1
  require 'assert'
2
- require 'dassets/engine'
3
2
  require 'dassets-sass'
4
3
 
4
+ require 'dassets/engine'
5
+
5
6
  class Dassets::Sass::Engine
6
7
 
7
- class BaseTests < Assert::Context
8
- desc "the Dassets::Sass engine"
8
+ class UnitTests < Assert::Context
9
+ desc "Dassets::Sass::Engine"
9
10
  setup do
11
+ @lp1 = '/a-load-path-1'
12
+ @lp2 = '/a-load-path-2'
10
13
  @engine = Dassets::Sass::Engine.new
11
14
  end
12
15
  subject{ @engine }
13
16
 
14
- should have_instance_method :syntax
17
+ should have_imeths :syntax, :load_paths
15
18
 
16
19
  should "be a Dassets engine" do
17
20
  assert_kind_of Dassets::Engine, subject
@@ -27,6 +30,25 @@ class Dassets::Sass::Engine
27
30
  assert_equal 'sass', Dassets::Sass::Engine.new(:syntax => 'sass').syntax
28
31
  end
29
32
 
33
+ should "default the load paths to be just the source path" do
34
+ assert_equal [subject.opts['source_path']], subject.load_paths
35
+ end
36
+
37
+ should "allow specifying custom load paths, always including the source path" do
38
+ engine = Dassets::Sass::Engine.new(:load_paths => @lp1)
39
+ assert_includes @lp1, engine.load_paths
40
+ assert_includes subject.opts['source_path'], engine.load_paths
41
+
42
+ engine = Dassets::Sass::Engine.new('load_paths' => [@lp1])
43
+ assert_includes @lp1, engine.load_paths
44
+ assert_includes subject.opts['source_path'], engine.load_paths
45
+
46
+ engine = Dassets::Sass::Engine.new('load_paths' => [@lp1, @lp2])
47
+ assert_includes @lp1, engine.load_paths
48
+ assert_includes @lp2, engine.load_paths
49
+ assert_includes subject.opts['source_path'], engine.load_paths
50
+ end
51
+
30
52
  should "transform any input extension to `css`" do
31
53
  assert_equal 'css', subject.ext('scss')
32
54
  assert_equal 'css', subject.ext('sass')
@@ -34,6 +56,25 @@ class Dassets::Sass::Engine
34
56
  assert_equal 'css', subject.ext('whatever')
35
57
  end
36
58
 
59
+ should "use its syntax and load paths when compiling" do
60
+ compiled_with_options = false
61
+ input = @factory.sass
62
+ syntax = :sass
63
+ sass_engine = Dassets::Sass::Engine.new({
64
+ :syntax => syntax,
65
+ :load_paths => [@lp1]
66
+ })
67
+ load_paths = sass_engine.load_paths
68
+
69
+ Assert.stub(::Sass, :compile).with(input, {
70
+ :syntax => syntax,
71
+ :load_paths => load_paths
72
+ }){ compiled_with_options = true }
73
+
74
+ sass_engine.compile(input)
75
+ assert_true compiled_with_options
76
+ end
77
+
37
78
  should "compile any input content as Sass css" do
38
79
  assert_equal @factory.scss_compiled, subject.compile(@factory.scss)
39
80
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dassets-sass
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 1
8
+ - 2
9
9
  - 0
10
- version: 0.1.0
10
+ version: 0.2.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kelly Redding
@@ -16,25 +16,24 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2013-05-01 00:00:00 Z
19
+ date: 2014-08-03 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: assert
23
- prerelease: false
24
22
  requirement: &id001 !ruby/object:Gem::Requirement
25
23
  none: false
26
24
  requirements:
27
- - - ">="
25
+ - - ~>
28
26
  - !ruby/object:Gem::Version
29
- hash: 3
27
+ hash: 27
30
28
  segments:
31
- - 0
32
- version: "0"
29
+ - 2
30
+ - 12
31
+ version: "2.12"
33
32
  type: :development
33
+ name: assert
34
34
  version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: sass
37
35
  prerelease: false
36
+ - !ruby/object:Gem::Dependency
38
37
  requirement: &id002 !ruby/object:Gem::Requirement
39
38
  none: false
40
39
  requirements:
@@ -46,10 +45,10 @@ dependencies:
46
45
  - 1
47
46
  version: "3.1"
48
47
  type: :runtime
48
+ name: sass
49
49
  version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: dassets
52
50
  prerelease: false
51
+ - !ruby/object:Gem::Dependency
53
52
  requirement: &id003 !ruby/object:Gem::Requirement
54
53
  none: false
55
54
  requirements:
@@ -60,7 +59,9 @@ dependencies:
60
59
  - 0
61
60
  version: "0"
62
61
  type: :runtime
62
+ name: dassets
63
63
  version_requirements: *id003
64
+ prerelease: false
64
65
  description: Dassets engine for compiling Sass
65
66
  email:
66
67
  - kelly@kellyredding.com
@@ -82,18 +83,12 @@ files:
82
83
  - lib/dassets-sass/version.rb
83
84
  - log/.gitkeep
84
85
  - test/helper.rb
85
- - test/support/app/assets/from_sass.sass
86
- - test/support/app/assets/from_scss.scss
87
- - test/support/config/assets.rb
88
86
  - test/support/factory.rb
89
- - test/support/public/from_sass-7173fff1fe11e06f1339beceaf4a9857.css
90
- - test/support/public/from_scss-ffcdabded94a78022e9c92e06e311f69.css
91
- - test/system/digest_tests.rb
92
87
  - test/unit/engine_tests.rb
93
88
  - tmp/.gitkeep
94
89
  homepage: http://github.com/redding/dassets-sass
95
- licenses: []
96
-
90
+ licenses:
91
+ - MIT
97
92
  post_install_message:
98
93
  rdoc_options: []
99
94
 
@@ -120,17 +115,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
115
  requirements: []
121
116
 
122
117
  rubyforge_project:
123
- rubygems_version: 1.8.24
118
+ rubygems_version: 1.8.25
124
119
  signing_key:
125
120
  specification_version: 3
126
121
  summary: Dassets engine for compiling Sass
127
122
  test_files:
128
123
  - test/helper.rb
129
- - test/support/app/assets/from_sass.sass
130
- - test/support/app/assets/from_scss.scss
131
- - test/support/config/assets.rb
132
124
  - test/support/factory.rb
133
- - test/support/public/from_sass-7173fff1fe11e06f1339beceaf4a9857.css
134
- - test/support/public/from_scss-ffcdabded94a78022e9c92e06e311f69.css
135
- - test/system/digest_tests.rb
136
125
  - test/unit/engine_tests.rb
@@ -1,2 +0,0 @@
1
- table.hl
2
- margin: 2em 0
@@ -1,7 +0,0 @@
1
- $blue: #3bbfce;
2
- $margin: 16px;
3
- .border {
4
- padding: $margin / 2;
5
- margin: $margin / 2;
6
- border-color: $blue;
7
- }
@@ -1,11 +0,0 @@
1
- require 'dassets'
2
- require 'dassets-sass'
3
-
4
- Dassets.configure do |c|
5
- c.root_path File.expand_path("../..", __FILE__)
6
- c.engine 'scss', Dassets::Sass::Engine, :syntax => 'scss'
7
- c.engine 'sass', Dassets::Sass::Engine, :syntax => 'sass'
8
- c.cache = nil
9
- c.file_store 'public'
10
-
11
- end
@@ -1,2 +0,0 @@
1
- table.hl {
2
- margin: 2em 0; }
@@ -1,4 +0,0 @@
1
- .border {
2
- padding: 8px;
3
- margin: 8px;
4
- border-color: #3bbfce; }
@@ -1,52 +0,0 @@
1
- require 'assert'
2
- require 'fileutils'
3
- require 'dassets'
4
- require 'dassets-sass'
5
-
6
- module Dassets::Sass
7
-
8
- class DigestScssTests < Assert::Context
9
- desc "digesting a scss source file with the sass engine registered"
10
- setup do
11
- @source_file = File.join(Dassets.config.source_path, "from_scss.scss")
12
- File.open(@source_file, 'w'){ |f| f.write(@factory.scss) }
13
- @compiled_file = File.join(Dassets.config.root_path, "public/from_scss-ffcdabded94a78022e9c92e06e311f69.css")
14
- @exp_compiled_content = @factory.scss_compiled
15
-
16
- FileUtils.rm_f @compiled_file
17
- end
18
-
19
- should "produce a css file with the source scss compiled to css" do
20
- assert_file_exists @source_file
21
- assert_not_file_exists @compiled_file
22
- Dassets.digest_source_files
23
-
24
- assert_file_exists @compiled_file
25
- assert_equal @exp_compiled_content, File.read(@compiled_file)
26
- end
27
-
28
- end
29
-
30
- class DigestSassTests < Assert::Context
31
- desc "digesting a sass source file with the sass engine registered"
32
- setup do
33
- @source_file = File.join(Dassets.config.source_path, "from_sass.sass")
34
- File.open(@source_file, 'w'){ |f| f.write(@factory.sass) }
35
- @compiled_file = File.join(Dassets.config.root_path, "public/from_sass-7173fff1fe11e06f1339beceaf4a9857.css")
36
- @exp_compiled_content = @factory.sass_compiled
37
-
38
- FileUtils.rm_f @compiled_file
39
- end
40
-
41
- should "produce a css file with the source sass compiled to css" do
42
- assert_file_exists @source_file
43
- assert_not_file_exists @compiled_file
44
- Dassets.digest_source_files
45
-
46
- assert_file_exists @compiled_file
47
- assert_equal @exp_compiled_content, File.read(@compiled_file)
48
- end
49
-
50
- end
51
-
52
- end