sassc-rails 0.0.6 → 0.0.7
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 +4 -4
- data/lib/sassc/rails/importer.rb +58 -11
- data/lib/sassc/rails/version.rb +1 -1
- data/sassc-rails.gemspec +1 -1
- data/test/dummy/app/assets/stylesheets/glob_test.scss +1 -0
- data/test/dummy/app/assets/stylesheets/imports_test.scss +1 -1
- data/test/sassc_rails_test.rb +39 -31
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 078582cf7ffcfded8c2ad89c4b79eb42edd7d36f
|
4
|
+
data.tar.gz: 73a3aa78f26ff4458327c91f8cfd26344c9969d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 898c33b217fadacde7a691e9eeb863af815f41babd9e384db38096a4043d312fff175dc2b1b1b22df882edf18905a9f4676b7d64e56c56218cc52e82b23bf2f7
|
7
|
+
data.tar.gz: 1548c14632589db9b8124806e46b25e4882d624f40589446ddb4923b39015051b5b6b2193e392e3dd7648c851dd5ef7a8c193faa1fac4b92a590c48f3f2672ee
|
data/lib/sassc/rails/importer.rb
CHANGED
@@ -10,7 +10,7 @@ module SassC
|
|
10
10
|
@postfix = postfix
|
11
11
|
end
|
12
12
|
|
13
|
-
def import_for(
|
13
|
+
def import_for(full_path, parent_dir, options)
|
14
14
|
SassC::Importer::Import.new(full_path)
|
15
15
|
end
|
16
16
|
end
|
@@ -20,7 +20,7 @@ module SassC
|
|
20
20
|
".css"
|
21
21
|
end
|
22
22
|
|
23
|
-
def import_for(
|
23
|
+
def import_for(full_path, parent_dir, options)
|
24
24
|
import_path = full_path.gsub(/\.css$/,"")
|
25
25
|
SassC::Importer::Import.new(import_path)
|
26
26
|
end
|
@@ -31,7 +31,7 @@ module SassC
|
|
31
31
|
".css.scss"
|
32
32
|
end
|
33
33
|
|
34
|
-
def import_for(
|
34
|
+
def import_for(full_path, parent_dir, options)
|
35
35
|
source = File.open(full_path, 'rb') { |f| f.read }
|
36
36
|
SassC::Importer::Import.new(full_path, source: source)
|
37
37
|
end
|
@@ -42,7 +42,7 @@ module SassC
|
|
42
42
|
".css.sass"
|
43
43
|
end
|
44
44
|
|
45
|
-
def import_for(
|
45
|
+
def import_for(full_path, parent_dir, options)
|
46
46
|
sass = File.open(full_path, 'rb') { |f| f.read }
|
47
47
|
parsed_scss = SassC::Sass2Scss.convert(sass)
|
48
48
|
SassC::Importer::Import.new(full_path, source: parsed_scss)
|
@@ -54,7 +54,7 @@ module SassC
|
|
54
54
|
".sass.erb"
|
55
55
|
end
|
56
56
|
|
57
|
-
def import_for(
|
57
|
+
def import_for(full_path, parent_dir, options)
|
58
58
|
template = Tilt::ERBTemplate.new(full_path)
|
59
59
|
parsed_erb = template.render(options[:sprockets][:context], {})
|
60
60
|
parsed_scss = SassC::Sass2Scss.convert(parsed_erb)
|
@@ -63,7 +63,7 @@ module SassC
|
|
63
63
|
end
|
64
64
|
|
65
65
|
class ERBExtension < Extension
|
66
|
-
def import_for(
|
66
|
+
def import_for(full_path, parent_dir, options)
|
67
67
|
template = Tilt::ERBTemplate.new(full_path)
|
68
68
|
parsed_erb = template.render(options[:sprockets][:context], {})
|
69
69
|
SassC::Importer::Import.new(full_path, source: parsed_erb)
|
@@ -71,22 +71,29 @@ module SassC
|
|
71
71
|
end
|
72
72
|
|
73
73
|
EXTENSIONS = [
|
74
|
+
CssScssExtension.new,
|
75
|
+
CssSassExtension.new,
|
74
76
|
Extension.new(".scss"),
|
75
77
|
Extension.new(".sass"),
|
76
78
|
CSSExtension.new,
|
77
79
|
ERBExtension.new(".scss.erb"),
|
78
80
|
ERBExtension.new(".css.erb"),
|
79
|
-
SassERBExtension.new
|
80
|
-
CssScssExtension.new,
|
81
|
-
CssSassExtension.new
|
81
|
+
SassERBExtension.new
|
82
82
|
]
|
83
83
|
|
84
84
|
PREFIXS = [ "", "_" ]
|
85
|
+
GLOB = /(\A|\/)(\*|\*\*\/\*)\z/
|
85
86
|
|
86
87
|
def imports(path, parent_path)
|
87
88
|
parent_dir, _ = File.split(parent_path)
|
88
89
|
specified_dir, specified_file = File.split(path)
|
89
90
|
|
91
|
+
if m = path.match(GLOB)
|
92
|
+
path = path.sub(m[0], "")
|
93
|
+
base = File.expand_path(path, File.dirname(parent_path))
|
94
|
+
return glob_imports(base, m[2], parent_path)
|
95
|
+
end
|
96
|
+
|
90
97
|
search_paths = ([parent_dir] + load_paths).uniq
|
91
98
|
|
92
99
|
if specified_dir != "."
|
@@ -103,17 +110,24 @@ module SassC
|
|
103
110
|
try_path = File.join(search_path, file_name + extension.postfix)
|
104
111
|
if File.exists?(try_path)
|
105
112
|
record_import_as_dependency try_path
|
106
|
-
return extension.import_for(
|
113
|
+
return extension.import_for(try_path, parent_dir, options)
|
107
114
|
end
|
108
115
|
end
|
109
116
|
end
|
110
117
|
end
|
111
118
|
|
112
|
-
|
119
|
+
# TODO: Raise an error from SassC here
|
120
|
+
raise ArgumentError.new("file not found: #{path}")
|
113
121
|
end
|
114
122
|
|
115
123
|
private
|
116
124
|
|
125
|
+
def extension_for_file(file)
|
126
|
+
EXTENSIONS.detect do |extension|
|
127
|
+
file.include? extension.postfix
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
117
131
|
def record_import_as_dependency(path)
|
118
132
|
context.depend_on path
|
119
133
|
end
|
@@ -125,6 +139,39 @@ module SassC
|
|
125
139
|
def load_paths
|
126
140
|
options[:load_paths]
|
127
141
|
end
|
142
|
+
|
143
|
+
def glob_imports(base, glob, current_file)
|
144
|
+
files = globbed_files(base, glob)
|
145
|
+
files = files.reject { |f| f == current_file }
|
146
|
+
|
147
|
+
files.map do |filename|
|
148
|
+
record_import_as_dependency(filename)
|
149
|
+
extension = extension_for_file(filename)
|
150
|
+
extension.import_for(filename, base, options)
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def globbed_files(base, glob)
|
155
|
+
# TODO: Raise an error from SassC here
|
156
|
+
raise ArgumentError unless glob == "*" || glob == "**/*"
|
157
|
+
|
158
|
+
extensions = EXTENSIONS.map(&:postfix)
|
159
|
+
exts = extensions.map { |ext| Regexp.escape("#{ext}") }.join("|")
|
160
|
+
sass_re = Regexp.compile("(#{exts})$")
|
161
|
+
|
162
|
+
record_import_as_dependency(base)
|
163
|
+
|
164
|
+
files = Dir["#{base}/#{glob}"].sort.map do |path|
|
165
|
+
if File.directory?(path)
|
166
|
+
record_import_as_dependency(path)
|
167
|
+
nil
|
168
|
+
elsif sass_re =~ path
|
169
|
+
path
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
files.compact
|
174
|
+
end
|
128
175
|
end
|
129
176
|
end
|
130
177
|
end
|
data/lib/sassc/rails/version.rb
CHANGED
data/sassc-rails.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |spec|
|
|
26
26
|
# unfortunately we require sass for now, so that we can
|
27
27
|
# reuse portions of the sprockets template
|
28
28
|
spec.add_dependency 'sass'
|
29
|
-
spec.add_dependency "sassc", "1.1.
|
29
|
+
spec.add_dependency "sassc", "~> 1.1.2"
|
30
30
|
|
31
31
|
spec.add_dependency "tilt"
|
32
32
|
|
@@ -0,0 +1 @@
|
|
1
|
+
@import "globbed/**/*";
|
data/test/sassc_rails_test.rb
CHANGED
@@ -133,9 +133,8 @@ class SassRailsTest < MiniTest::Unit::TestCase
|
|
133
133
|
|
134
134
|
assert_match /default-old-css/, css_output
|
135
135
|
|
136
|
-
|
137
|
-
|
138
|
-
# assert_match /nested-glob/, css_output
|
136
|
+
assert_match /globbed/, css_output
|
137
|
+
assert_match /nested-glob/, css_output
|
139
138
|
end
|
140
139
|
|
141
140
|
def test_style_config_item_is_defaulted_to_expanded_in_development_mode
|
@@ -198,41 +197,50 @@ class SassRailsTest < MiniTest::Unit::TestCase
|
|
198
197
|
# assert_match /\.import-css-application/, css_output
|
199
198
|
#end
|
200
199
|
|
201
|
-
|
202
|
-
|
200
|
+
def test_globbed_imports_work_when_globbed_file_is_changed
|
201
|
+
skip "This seems to work in practice, possible test setup problem"
|
203
202
|
|
204
|
-
|
205
|
-
|
203
|
+
begin
|
204
|
+
initialize!
|
206
205
|
|
207
|
-
|
208
|
-
# asset_output(filename)
|
206
|
+
new_file = File.join(File.dirname(__FILE__), 'dummy', 'app', 'assets', 'stylesheets', 'globbed', 'new_glob.scss')
|
209
207
|
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
# end
|
208
|
+
File.open(new_file, 'w') do |file|
|
209
|
+
file.puts '.new-file-test { color: #000; }'
|
210
|
+
end
|
214
211
|
|
215
|
-
|
216
|
-
|
217
|
-
# end
|
218
|
-
#end
|
212
|
+
css_output = render_asset("glob_test.scss")
|
213
|
+
assert_match /new-file-test/, css_output
|
219
214
|
|
220
|
-
|
221
|
-
|
215
|
+
File.open(new_file, 'w') do |file|
|
216
|
+
file.puts '.changed-file-test { color: #000; }'
|
217
|
+
end
|
222
218
|
|
223
|
-
|
224
|
-
|
219
|
+
new_css_output = render_asset("glob_test.scss")
|
220
|
+
assert_match /changed-file-test/, new_css_output
|
221
|
+
refute_equal css_output, new_css_output
|
222
|
+
ensure
|
223
|
+
File.delete(new_file)
|
224
|
+
end
|
225
|
+
end
|
225
226
|
|
226
|
-
|
227
|
-
|
227
|
+
def test_globbed_imports_work_when_globbed_file_is_added
|
228
|
+
begin
|
229
|
+
initialize!
|
228
230
|
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
# end
|
231
|
+
css_output = render_asset("glob_test.scss")
|
232
|
+
refute_match /changed-file-test/, css_output
|
233
|
+
new_file = File.join(File.dirname(__FILE__), 'dummy', 'app', 'assets', 'stylesheets', 'globbed', 'new_glob.scss')
|
233
234
|
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
235
|
+
File.open(new_file, 'w') do |file|
|
236
|
+
file.puts '.changed-file-test { color: #000; }'
|
237
|
+
end
|
238
|
+
|
239
|
+
new_css_output = render_asset("glob_test.scss")
|
240
|
+
assert_match /changed-file-test/, new_css_output
|
241
|
+
refute_equal css_output, new_css_output
|
242
|
+
ensure
|
243
|
+
File.delete(new_file)
|
244
|
+
end
|
245
|
+
end
|
238
246
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sassc-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Boland
|
@@ -84,16 +84,16 @@ dependencies:
|
|
84
84
|
name: sassc
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- -
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 1.1.
|
89
|
+
version: 1.1.2
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- -
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 1.1.
|
96
|
+
version: 1.1.2
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: tilt
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -176,6 +176,7 @@ files:
|
|
176
176
|
- test/dummy/app/assets/stylesheets/css_scss_erb_handler.scss.erb
|
177
177
|
- test/dummy/app/assets/stylesheets/css_scss_handler.css.scss
|
178
178
|
- test/dummy/app/assets/stylesheets/erb_render_with_context.css.erb
|
179
|
+
- test/dummy/app/assets/stylesheets/glob_test.scss
|
179
180
|
- test/dummy/app/assets/stylesheets/globbed/globbed.scss
|
180
181
|
- test/dummy/app/assets/stylesheets/globbed/nested/nested_glob.scss
|
181
182
|
- test/dummy/app/assets/stylesheets/helpers_test.scss
|
@@ -447,6 +448,7 @@ test_files:
|
|
447
448
|
- test/dummy/app/assets/stylesheets/css_scss_erb_handler.scss.erb
|
448
449
|
- test/dummy/app/assets/stylesheets/css_scss_handler.css.scss
|
449
450
|
- test/dummy/app/assets/stylesheets/erb_render_with_context.css.erb
|
451
|
+
- test/dummy/app/assets/stylesheets/glob_test.scss
|
450
452
|
- test/dummy/app/assets/stylesheets/globbed/globbed.scss
|
451
453
|
- test/dummy/app/assets/stylesheets/globbed/nested/nested_glob.scss
|
452
454
|
- test/dummy/app/assets/stylesheets/helpers_test.scss
|