sass_paths 1.0.1 → 2.0.0

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.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZTVjYTFlZWI1MGEwOWYxMjU2ODI2MTJiOTg2MzJiNjUzYzNjZDJhNw==
5
- data.tar.gz: !binary |-
6
- NWIyNGUyOTExMjkwZmM0YTFmOGJlMWIxN2Y1MDQyN2I4MjZkMDQ4YQ==
2
+ SHA1:
3
+ metadata.gz: c46e300a723afb573af1e55facf66b1d98f5742f
4
+ data.tar.gz: 713fa03b1b629e69444331e9b81e9ba1d1523d1d
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- YzM0NzczYWU4MGY2MTJjZDZkMzRkZjkxOTViNTA2NWY1ODZiNjNkNzA2ZGRm
10
- YTJkYWNmMjJmYTAxYTNlODlkYTA1NDgzZTQ1MDAxYmI1NWI5MmNmMDUxYTcx
11
- M2Q2MmIyZDQ3ZjFlODVjOGI3YTEzY2I4M2Y4ZjU3MjViZWQ5NjA=
12
- data.tar.gz: !binary |-
13
- MGIyMzk4ZjI3NGY5MmFkNjAzNWM4MzE5ODc0NmJhZTRlNTJhZTY4MWFiYWM2
14
- NjU3YmYzOGNjOTkzMTM4ZmIyOGE0MGY2YzliNmY4YzQzZmExYTRlMWVmZWU5
15
- NzRjZmNjYmQ2MjA4YWQxOGM0YjQwZTI4OWEzNGU4ZTg0MGYyODc=
6
+ metadata.gz: 2517481edad37c238d9d460add9ebb77b917d532870a1306279e0366ad0275f9416f9ae59edc683a9a5f84eb73579982789058a603d6c04ef666466498314fe3
7
+ data.tar.gz: 5f2ca50b7d1ddb53cf78031e75258e5ab9fe255089db125352ee1bd1de75e00311251b2afd46645043ddacbc6bf879dff84d940aeb907d45b06d7049b5f5d97f
data/README.md CHANGED
@@ -1,7 +1,6 @@
1
1
  # SassPaths
2
2
 
3
- This gem provides helper methods for appending directories, gems, and bower
4
- extensions to the `SASS_PATH` environment variable. This enables you to load
3
+ This gem provides helper methods for appending directories and gems to the `SASS_PATH` environment variable. This enables you to load
5
4
  projects that do not themselves register with SASS.
6
5
 
7
6
  ## Installation
@@ -45,16 +44,23 @@ well as the directory within the gem that contains the Sass files.
45
44
  SassPaths.append_gem_path(gem_name, directory)
46
45
  ```
47
46
 
48
- #### Bower Components
47
+ #### Temporary Replacements
49
48
 
50
- In order to append the Sass files within a bower components directory, call
51
- `append_bower_components` with the name of the directory where the components
52
- are installed.
49
+ Sometimes it can be fun to change the Sass paths for the duration of a block. For example, this would swap out using [Neat](http://neat.bourbon.io) versions.
53
50
 
54
51
  ```ruby
55
- SassPaths.append_bower_components('directory')
52
+ replacements = {
53
+ "/gems/neat-1.8.0/app/assets/stylesheets" => "/gems/neat-2.0.0/core"
54
+ }
55
+ SassPaths.with_replacements(replacements) do
56
+ options = { load_paths: Sass.load_paths }
57
+ Sass::Engine.new(template, options).render
58
+ end
56
59
  ```
57
60
 
61
+ The `with_replacements` takes no responsiblity for knowing about the paths passed in as being valid or not.
62
+
63
+
58
64
  ### Rails
59
65
 
60
66
  Create an initializer and utilize the above methods.
@@ -66,5 +72,4 @@ Use the above methods in some part of your application's boot process.
66
72
  ## Testing
67
73
 
68
74
  * Run `bundle install` to install development dependencies.
69
- * Run `bower install` from `test/` to install bower components for testing.
70
75
  * Run `rake test` to run all tests.
data/Rakefile CHANGED
@@ -1,10 +1,9 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
3
 
4
- task :default => [:test]
4
+ task default: [:test]
5
5
 
6
6
  Rake::TestTask.new do |t|
7
7
  t.libs << 'test'
8
- t.pattern = "test/**/*_test.rb"
8
+ t.pattern = 'test/**/*_test.rb'
9
9
  end
10
-
@@ -1,32 +1,30 @@
1
- require "sass_paths/gem"
2
- require "sass_paths/bower"
3
- require "sass_paths/version"
1
+ require 'sass_paths/gem'
2
+ require 'sass_paths/version'
4
3
  require 'sass'
5
4
 
6
5
  module SassPaths
7
6
  class << self
8
7
  include Gem
9
- include Bower
10
8
 
11
9
  def append(*paths)
12
- existing_paths = paths.select { |path| Dir.exists? path }
13
- new_paths = [env_path.split(File::PATH_SEPARATOR), existing_paths].flatten
14
- .compact
15
- .uniq
16
- ENV["SASS_PATH"] = new_paths.join(File::PATH_SEPARATOR)
10
+ existing_paths = paths.select { |path| Dir.exist? path }
11
+ new_paths = [
12
+ env_path.split(File::PATH_SEPARATOR),
13
+ existing_paths
14
+ ].flatten.compact.uniq
15
+ self.env_path = new_paths
17
16
  end
18
17
 
19
18
  def append_gem_path(gem, path)
20
19
  append(gem_sass_path(gem, path))
21
20
  end
22
21
 
23
- def append_bower_components(relative_bower_path)
24
- sass_paths = get_bower_sass_paths(relative_bower_path)
25
- append(*sass_paths)
22
+ def env_path
23
+ ENV['SASS_PATH'] || ''
26
24
  end
27
25
 
28
- def env_path
29
- ENV["SASS_PATH"] || ""
26
+ def env_path=(*paths)
27
+ ENV['SASS_PATH'] = paths.join(File::PATH_SEPARATOR)
30
28
  end
31
29
 
32
30
  def reload_paths!
@@ -34,9 +32,21 @@ module SassPaths
34
32
  Sass.instance_variable_set('@load_paths', nil)
35
33
  Sass.load_paths
36
34
  end
35
+
36
+ def with_replacements(replacements = {})
37
+ reload_paths!
38
+ old_paths = Sass.load_paths.dup
39
+ tmp_paths = old_paths.map do |path|
40
+ replacements[path] ? replacements[path] : path
41
+ end
42
+ self.env_path = tmp_paths
43
+ reload_paths!
44
+ yield
45
+ ensure
46
+ self.env_path = old_paths
47
+ reload_paths!
48
+ end
37
49
  end
38
50
  end
39
51
 
40
- if defined?(Rails)
41
- require 'sass_paths/rails/engine'
42
- end
52
+ require 'sass_paths/rails/engine' if defined?(Rails)
@@ -1,3 +1,3 @@
1
1
  module SassPaths
2
- VERSION = "1.0.1"
2
+ VERSION = '2.0.0'.freeze
3
3
  end
@@ -4,24 +4,24 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'sass_paths/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "sass_paths"
7
+ spec.name = 'sass_paths'
8
8
  spec.version = SassPaths::VERSION
9
- spec.authors = ["Stafford Brunk", "Jonathan Lehman"]
10
- spec.email = ["sbrunk@customink.com", "jlehman@customink.com"]
11
- spec.summary = %q{Helper methods to append directories to the SASS_PATH ENV variable}
12
- spec.description = %q{This gem provides helper methods for appending directories, gems, and bower extensions to the SASS_PATH environment variable}
13
- spec.homepage = "https://github.com/customink/sass_paths"
14
- spec.license = "MIT"
9
+ spec.authors = ['Stafford Brunk', 'Jonathan Lehman']
10
+ spec.email = ['sbrunk@customink.com', 'jlehman@customink.com']
11
+ spec.summary = 'Helper methods to append directories to the SASS_PATH ENV variable'
12
+ spec.description = 'This gem provides helper methods for appending directories, and gems to the SASS_PATH environment variable'
13
+ spec.homepage = 'https://github.com/customink/sass_paths'
14
+ spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.6"
22
- spec.add_development_dependency "rake"
23
- spec.add_development_dependency "minitest"
24
- spec.add_development_dependency "susy"
21
+ spec.add_development_dependency 'bundler', '~> 1.6'
22
+ spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'minitest'
24
+ spec.add_development_dependency 'susy'
25
25
 
26
- spec.add_dependency "sass", '~> 3.2'
26
+ spec.add_dependency 'sass', '~> 3.2'
27
27
  end
@@ -32,18 +32,7 @@ module SassPaths
32
32
  ENV['SASS_PATH'] = 'lib/sass_paths:lib'
33
33
  SassPaths.append_gem_path('susy', 'sass')
34
34
  assert ENV['SASS_PATH'].include? 'lib/sass_paths:lib'
35
- assert ENV['SASS_PATH'].match /gems\/susy-[\d\.]+\/sass/
36
- end
37
- end
38
-
39
- describe '#append_bower_components' do
40
- it 'appends bower paths to SASS_PATH ENV' do
41
- ENV['SASS_PATH'] = 'lib/sass_paths:lib'
42
- SassPaths.append_bower_components('.')
43
- assert ENV['SASS_PATH'].include? 'lib/sass_paths:lib'
44
- assert ENV['SASS_PATH'].match /bower_components\/susy\/sass/
45
- assert ENV['SASS_PATH'].match /bower_components\/sassy-maps\/sass/
46
- refute ENV['SASS_PATH'].match /bower_components\/jquery/
35
+ assert ENV['SASS_PATH'].match(/gems\/susy-[\d\.]+\/sass/)
47
36
  end
48
37
  end
49
38
 
@@ -63,4 +52,34 @@ module SassPaths
63
52
  end
64
53
  end
65
54
 
55
+ describe '#with_replacements' do
56
+ it 'can swap out paths' do
57
+ neatv1 = 'neat-1.8.0/stylesheets'
58
+ neatv2 = 'neat-2.0.0/stylesheets'
59
+ brbnv4 = 'bourbon-4.3.3/stylesheets'
60
+ brbnv5 = 'bourbon-5.0.0/stylesheets'
61
+ ENV['SASS_PATH'] = "lib:#{neatv1}:lib/sass:#{brbnv4}"
62
+ SassPaths.reload_paths!
63
+ assert_equal 'lib', Sass.load_paths[0]
64
+ assert_equal neatv1, Sass.load_paths[1]
65
+ assert_equal 'lib/sass', Sass.load_paths[2]
66
+ assert_equal brbnv4, Sass.load_paths[3]
67
+ replacements = {
68
+ neatv1 => neatv2,
69
+ brbnv4 => brbnv5
70
+ }
71
+ SassPaths.with_replacements(replacements) do
72
+ assert_equal 'lib', Sass.load_paths[0]
73
+ assert_equal neatv2, Sass.load_paths[1]
74
+ assert_equal 'lib/sass', Sass.load_paths[2]
75
+ assert_equal brbnv5, Sass.load_paths[3]
76
+ ENV['SASS_PATH'] = "lib:#{neatv2}:lib/sass:#{brbnv5}"
77
+ end
78
+ assert_equal 'lib', Sass.load_paths[0]
79
+ assert_equal neatv1, Sass.load_paths[1]
80
+ assert_equal 'lib/sass', Sass.load_paths[2]
81
+ assert_equal brbnv4, Sass.load_paths[3]
82
+ ENV['SASS_PATH'] = "lib:#{neatv1}:lib/sass:#{brbnv4}"
83
+ end
84
+ end
66
85
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sass_paths
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stafford Brunk
@@ -9,80 +9,80 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-10-09 00:00:00.000000000 Z
12
+ date: 2017-03-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '1.6'
21
21
  type: :development
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: '1.6'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ! '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ! '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: minitest
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ! '>='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ! '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: susy
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ! '>='
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ! '>='
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: sass
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ~>
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
76
  version: '3.2'
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ~>
81
+ - - "~>"
82
82
  - !ruby/object:Gem::Version
83
83
  version: '3.2'
84
- description: This gem provides helper methods for appending directories, gems, and
85
- bower extensions to the SASS_PATH environment variable
84
+ description: This gem provides helper methods for appending directories, and gems
85
+ to the SASS_PATH environment variable
86
86
  email:
87
87
  - sbrunk@customink.com
88
88
  - jlehman@customink.com
@@ -90,20 +90,17 @@ executables: []
90
90
  extensions: []
91
91
  extra_rdoc_files: []
92
92
  files:
93
- - .gitignore
93
+ - ".gitignore"
94
94
  - CONTRIBUTING.md
95
95
  - Gemfile
96
96
  - LICENSE.txt
97
97
  - README.md
98
98
  - Rakefile
99
99
  - lib/sass_paths.rb
100
- - lib/sass_paths/bower.rb
101
100
  - lib/sass_paths/gem.rb
102
101
  - lib/sass_paths/rails/engine.rb
103
102
  - lib/sass_paths/version.rb
104
103
  - sass_paths.gemspec
105
- - test/.bowerrc
106
- - test/bower.json
107
104
  - test/sass_paths/sass_paths_test.rb
108
105
  - test/test_helper.rb
109
106
  homepage: https://github.com/customink/sass_paths
@@ -116,22 +113,20 @@ require_paths:
116
113
  - lib
117
114
  required_ruby_version: !ruby/object:Gem::Requirement
118
115
  requirements:
119
- - - ! '>='
116
+ - - ">="
120
117
  - !ruby/object:Gem::Version
121
118
  version: '0'
122
119
  required_rubygems_version: !ruby/object:Gem::Requirement
123
120
  requirements:
124
- - - ! '>='
121
+ - - ">="
125
122
  - !ruby/object:Gem::Version
126
123
  version: '0'
127
124
  requirements: []
128
125
  rubyforge_project:
129
- rubygems_version: 2.4.1
126
+ rubygems_version: 2.6.8
130
127
  signing_key:
131
128
  specification_version: 4
132
129
  summary: Helper methods to append directories to the SASS_PATH ENV variable
133
130
  test_files:
134
- - test/.bowerrc
135
- - test/bower.json
136
131
  - test/sass_paths/sass_paths_test.rb
137
132
  - test/test_helper.rb
@@ -1,39 +0,0 @@
1
- require 'json'
2
-
3
- module SassPaths
4
- module Bower
5
-
6
- private
7
-
8
- PERMITTED_FILE_EXTENSIONS = ['.scss', '.sass'].freeze
9
-
10
- def get_bower_sass_paths(bower_path)
11
- sass_paths = []
12
- Dir["#{bower_path}/**/.bower.json"].each do |f|
13
- get_main_paths(f).each do |path|
14
- sass_paths << path
15
- end
16
- end
17
- sass_paths
18
- end
19
-
20
- def get_main_paths(file_name)
21
- base_directory = File.dirname(file_name)
22
- bower_json = JSON.parse(File.read(file_name))
23
-
24
- main_files = wrap_in_array(bower_json['main'])
25
- .select { |main_file| PERMITTED_FILE_EXTENSIONS.include? File.extname(main_file) }
26
- .map { |main_file| "#{base_directory}/#{File.dirname(main_file)}" }
27
- end
28
-
29
- def wrap_in_array(object)
30
- if object.nil?
31
- []
32
- elsif object.respond_to?(:to_ary)
33
- object.to_ary || [object]
34
- else
35
- [object]
36
- end
37
- end
38
- end
39
- end
@@ -1,3 +0,0 @@
1
- {
2
- "directory": "bower_components"
3
- }
@@ -1,22 +0,0 @@
1
- {
2
- "name": "sass_paths",
3
- "version": "0.0.0",
4
- "homepage": "https://github.com/customink/sass-paths",
5
- "authors": [
6
- "Jonathan Lehman <jonathan.lehman91@gmail.com>"
7
- ],
8
- "license": "MIT",
9
- "ignore": [
10
- "**/.*",
11
- "node_modules",
12
- "bower_components",
13
- "app/bower_components",
14
- "test",
15
- "tests"
16
- ],
17
- "devDependencies": {
18
- "susy": "~2.1.3",
19
- "sassy-maps": "~0.4.0",
20
- "jquery": "~2.1.1"
21
- }
22
- }