compass-import-once 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +1 -1
- data/Gemfile_sass_3_2 +5 -0
- data/README.md +8 -2
- data/Rakefile +8 -0
- data/VERSION +1 -1
- data/compass-import-once.gemspec +3 -0
- data/lib/compass/import-once/importer.rb +6 -6
- data/test/diff_as_string.rb +48 -0
- data/test/fixtures/_simple_partial.scss +5 -0
- data/test/fixtures/basic.css +3 -0
- data/test/fixtures/basic.scss +2 -0
- data/test/fixtures/force_import.css +7 -0
- data/test/fixtures/force_import.scss +2 -0
- data/test/fixtures/with_globbing.css +3 -0
- data/test/fixtures/with_globbing.scss +2 -0
- data/test/import_once_test.rb +33 -0
- data/test/test_helper.rb +9 -0
- metadata +79 -16
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 28596ec96dcd5b1e89c2f93ace9d3518fb204d4d
|
4
|
+
data.tar.gz: 61974005b3c6f65b7886797fb8fee1365c63216e
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 26e5401d031e9529452769b41f6bf64b80c544bf7a91ed8aaaa7f1a1c8019daa67ac9a4d3636a32cea839251d7717d40398fd155de643f30cd1ac7e2f0559a7a
|
7
|
+
data.tar.gz: 652966b41118c5f3eefae3b9b9208d6e5c3867d57c4a4d3a9cbfe674c6f968340857446d26143f06e1535b44d0249438d88df88c903918ab004083ea22d8bac3
|
data/.gitignore
CHANGED
data/Gemfile_sass_3_2
ADDED
data/README.md
CHANGED
@@ -11,9 +11,9 @@ without compass in any Sass-based project.
|
|
11
11
|
|
12
12
|
## Installation
|
13
13
|
|
14
|
-
|
14
|
+
Either add this line to your application's Gemfile if you have one:
|
15
15
|
|
16
|
-
gem 'compass-import-once', :require =>
|
16
|
+
gem 'compass-import-once', :require => 'compass/import-once/activate'
|
17
17
|
|
18
18
|
And then execute:
|
19
19
|
|
@@ -25,6 +25,12 @@ Or install it yourself as:
|
|
25
25
|
|
26
26
|
## Usage
|
27
27
|
|
28
|
+
To use with the Sass command line:
|
29
|
+
|
30
|
+
```
|
31
|
+
sass -r 'compass/import-once/activate' ...
|
32
|
+
```
|
33
|
+
|
28
34
|
To enable in non-compass environments there's two options:
|
29
35
|
|
30
36
|
require 'compass/import-once/activate'
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.3
|
data/compass-import-once.gemspec
CHANGED
@@ -18,6 +18,9 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
+
spec.add_dependency "sass", ">= 3.2", "< 3.5"
|
21
22
|
spec.add_development_dependency "bundler", "~> 1.3"
|
23
|
+
spec.add_development_dependency "diff-lcs"
|
22
24
|
spec.add_development_dependency "rake"
|
25
|
+
spec.add_development_dependency "sass-globbing"
|
23
26
|
end
|
@@ -2,18 +2,18 @@ module Compass
|
|
2
2
|
module ImportOnce
|
3
3
|
# Any importer object that is extended with this module will get the import once behavior.
|
4
4
|
module Importer
|
5
|
-
def find_relative(uri, base, options)
|
5
|
+
def find_relative(uri, base, options, *args)
|
6
6
|
uri, force_import = handle_force_import(uri)
|
7
|
-
maybe_replace_with_dummy_engine(super(uri, base, options), options, force_import)
|
7
|
+
maybe_replace_with_dummy_engine(super(uri, base, options, *args), options, force_import)
|
8
8
|
end
|
9
9
|
|
10
|
-
def find(uri, options)
|
10
|
+
def find(uri, options, *args)
|
11
11
|
uri, force_import = handle_force_import(uri)
|
12
|
-
maybe_replace_with_dummy_engine(super(uri, options), options, force_import)
|
12
|
+
maybe_replace_with_dummy_engine(super(uri, options, *args), options, force_import)
|
13
13
|
end
|
14
14
|
|
15
15
|
# ensure that all dummy engines share the same sass cache entry.
|
16
|
-
def key(uri, options)
|
16
|
+
def key(uri, options, *args)
|
17
17
|
if uri =~ /^\(NOT IMPORTED\)/
|
18
18
|
["(import-once)", "dummy_engine"]
|
19
19
|
else
|
@@ -21,7 +21,7 @@ module Compass
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
def mtime(uri, options)
|
24
|
+
def mtime(uri, options, *args)
|
25
25
|
if uri =~ /^\(NOT IMPORTED\) (.*)$/
|
26
26
|
File.mtime($1)
|
27
27
|
else
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'diff/lcs'
|
2
|
+
require 'diff/lcs/hunk'
|
3
|
+
|
4
|
+
module DiffAsString
|
5
|
+
#stole this from rspec who stole this from the gem
|
6
|
+
def diff_as_string(data_old, data_new)
|
7
|
+
data_old = data_old.split(/\n/).map! { |e| e.chomp }
|
8
|
+
data_new = data_new.split(/\n/).map! { |e| e.chomp }
|
9
|
+
output = ""
|
10
|
+
diffs = ::Diff::LCS.diff(data_old, data_new)
|
11
|
+
return output if diffs.empty?
|
12
|
+
oldhunk = hunk = nil
|
13
|
+
file_length_difference = 0
|
14
|
+
diffs.each do |piece|
|
15
|
+
begin
|
16
|
+
hunk = ::Diff::LCS::Hunk.new(
|
17
|
+
data_old, data_new, piece, context_lines, file_length_difference
|
18
|
+
)
|
19
|
+
file_length_difference = hunk.file_length_difference
|
20
|
+
next unless oldhunk
|
21
|
+
# Hunks may overlap, which is why we need to be careful when our
|
22
|
+
# diff includes lines of context. Otherwise, we might print
|
23
|
+
# redundant lines.
|
24
|
+
if (context_lines > 0) and hunk.overlaps?(oldhunk)
|
25
|
+
hunk.unshift(oldhunk)
|
26
|
+
else
|
27
|
+
output << oldhunk.diff(format)
|
28
|
+
end
|
29
|
+
ensure
|
30
|
+
oldhunk = hunk
|
31
|
+
output << "\n"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
#Handle the last remaining hunk
|
35
|
+
output << oldhunk.diff(format) << "\n"
|
36
|
+
end
|
37
|
+
|
38
|
+
protected
|
39
|
+
|
40
|
+
def format
|
41
|
+
:unified
|
42
|
+
end
|
43
|
+
|
44
|
+
def context_lines
|
45
|
+
3
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require 'test_helper'
|
3
|
+
require 'fileutils'
|
4
|
+
|
5
|
+
class ImportOnceTest < Test::Unit::TestCase
|
6
|
+
FIXTURES_DIR = File.join(File.expand_path(File.dirname(__FILE__)), "fixtures")
|
7
|
+
Dir.glob(File.join(FIXTURES_DIR, "**", "*.scss")).each do |scss_file|
|
8
|
+
if ENV["FIXTURE"]
|
9
|
+
next unless File.expand_path(ENV["FIXTURE"]) == scss_file
|
10
|
+
end
|
11
|
+
dir = File.dirname(scss_file)
|
12
|
+
basename = File.basename(scss_file, ".scss")
|
13
|
+
next if basename.start_with?("_")
|
14
|
+
define_method "test_#{basename}" do
|
15
|
+
assert_compilation_result(
|
16
|
+
File.join(dir, "#{basename}.scss"),
|
17
|
+
File.join(dir, "#{basename}.css"))
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def assert_compilation_result(sass_file, css_file, options = {})
|
24
|
+
options[:style] ||= :expanded
|
25
|
+
actual_result = Sass.compile_file(sass_file, options)
|
26
|
+
expected_result = File.read(css_file)
|
27
|
+
assert expected_result == actual_result, diff_as_string(expected_result, actual_result)
|
28
|
+
FileUtils.rm_f("#{css_file}.error") # cleanup from old tests now that it's passing
|
29
|
+
rescue Exception => e
|
30
|
+
open("#{css_file}.error", "w") {|f| f.write(actual_result) }
|
31
|
+
raise
|
32
|
+
end
|
33
|
+
end
|
data/test/test_helper.rb
ADDED
metadata
CHANGED
@@ -1,20 +1,38 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: compass-import-once
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Chris Eppstein
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-03-12 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: sass
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.2'
|
20
|
+
- - <
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3.5'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.2'
|
30
|
+
- - <
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.5'
|
14
33
|
- !ruby/object:Gem::Dependency
|
15
34
|
name: bundler
|
16
35
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
36
|
requirements:
|
19
37
|
- - ~>
|
20
38
|
- !ruby/object:Gem::Version
|
@@ -22,25 +40,50 @@ dependencies:
|
|
22
40
|
type: :development
|
23
41
|
prerelease: false
|
24
42
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
43
|
requirements:
|
27
44
|
- - ~>
|
28
45
|
- !ruby/object:Gem::Version
|
29
46
|
version: '1.3'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: diff-lcs
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
30
61
|
- !ruby/object:Gem::Dependency
|
31
62
|
name: rake
|
32
63
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
64
|
requirements:
|
35
|
-
- -
|
65
|
+
- - '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - '>='
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: sass-globbing
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - '>='
|
36
80
|
- !ruby/object:Gem::Version
|
37
81
|
version: '0'
|
38
82
|
type: :development
|
39
83
|
prerelease: false
|
40
84
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
85
|
requirements:
|
43
|
-
- -
|
86
|
+
- - '>='
|
44
87
|
- !ruby/object:Gem::Version
|
45
88
|
version: '0'
|
46
89
|
description: Changes the behavior of Sass's @import directive to only import a file
|
@@ -53,6 +96,7 @@ extra_rdoc_files: []
|
|
53
96
|
files:
|
54
97
|
- .gitignore
|
55
98
|
- Gemfile
|
99
|
+
- Gemfile_sass_3_2
|
56
100
|
- LICENSE.txt
|
57
101
|
- README.md
|
58
102
|
- Rakefile
|
@@ -64,30 +108,49 @@ files:
|
|
64
108
|
- lib/compass/import-once/engine.rb
|
65
109
|
- lib/compass/import-once/importer.rb
|
66
110
|
- lib/compass/import-once/version.rb
|
111
|
+
- test/diff_as_string.rb
|
112
|
+
- test/fixtures/_simple_partial.scss
|
113
|
+
- test/fixtures/basic.css
|
114
|
+
- test/fixtures/basic.scss
|
115
|
+
- test/fixtures/force_import.css
|
116
|
+
- test/fixtures/force_import.scss
|
117
|
+
- test/fixtures/with_globbing.css
|
118
|
+
- test/fixtures/with_globbing.scss
|
119
|
+
- test/import_once_test.rb
|
120
|
+
- test/test_helper.rb
|
67
121
|
homepage: https://github.com/chriseppstein/compass/tree/master/import-once
|
68
122
|
licenses:
|
69
123
|
- MIT
|
124
|
+
metadata: {}
|
70
125
|
post_install_message:
|
71
126
|
rdoc_options: []
|
72
127
|
require_paths:
|
73
128
|
- lib
|
74
129
|
required_ruby_version: !ruby/object:Gem::Requirement
|
75
|
-
none: false
|
76
130
|
requirements:
|
77
|
-
- -
|
131
|
+
- - '>='
|
78
132
|
- !ruby/object:Gem::Version
|
79
133
|
version: '0'
|
80
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
135
|
requirements:
|
83
|
-
- -
|
136
|
+
- - '>='
|
84
137
|
- !ruby/object:Gem::Version
|
85
138
|
version: '0'
|
86
139
|
requirements: []
|
87
140
|
rubyforge_project:
|
88
|
-
rubygems_version:
|
141
|
+
rubygems_version: 2.0.3
|
89
142
|
signing_key:
|
90
|
-
specification_version:
|
143
|
+
specification_version: 4
|
91
144
|
summary: Speed up your Sass compilation by making @import only import each file once.
|
92
|
-
test_files:
|
145
|
+
test_files:
|
146
|
+
- test/diff_as_string.rb
|
147
|
+
- test/fixtures/_simple_partial.scss
|
148
|
+
- test/fixtures/basic.css
|
149
|
+
- test/fixtures/basic.scss
|
150
|
+
- test/fixtures/force_import.css
|
151
|
+
- test/fixtures/force_import.scss
|
152
|
+
- test/fixtures/with_globbing.css
|
153
|
+
- test/fixtures/with_globbing.scss
|
154
|
+
- test/import_once_test.rb
|
155
|
+
- test/test_helper.rb
|
93
156
|
has_rdoc:
|