jekyll-sass-converter 1.0.0.rc4 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e62ef230908db14e202a28b5a34e94b977a8611b
4
- data.tar.gz: 02b00a0ed7815186816adb92740dc185755f8c96
3
+ metadata.gz: fa33b7fb6d5090ac41ac28b7a66caf53bbaa2679
4
+ data.tar.gz: 08eab1bad34f5d3ceb7d95f320f414b32a60e4cf
5
5
  SHA512:
6
- metadata.gz: 2b5821d76557b12c224d9105d58d4ab68b44a53db9219bb82de0e79a2c6bcc5960d61467f6c9561b31e8f668a1a5e70ca278051fa6b1473f243c1e82e0ae9abe
7
- data.tar.gz: 04f8089e22e46c36193f6131166b9af599ba272d813fd67cbaf65ce5325c37d90731e0911dccc8e45a4afc4e18c9a882127eb791b8a517b903c8db92957aeda5
6
+ metadata.gz: 3a7888bd4ae43c7c83d20fa46c9664a45f278c58561704f4d0dbc646b8b368c985a0b1a01490a7c55d44af930978e800cd75e97ef4f5702de45510ae141de6c5
7
+ data.tar.gz: add1ac2e2f6d4ba6c06487af52c556ad40139e1008221f5c9b5d1d16e752857da492a088b733b9f963884853df12962befd225158a8105b80895aebbc64adb73
data/History.markdown CHANGED
@@ -1,5 +1,8 @@
1
1
  ## HEAD
2
2
 
3
+ ## 1.0.0 / 2014-05-06
4
+
3
5
  * Birthday!
4
6
  * Don't use core extensions (#2)
5
7
  * Allow users to set style of outputted CSS (#4)
8
+ * Determine input syntax based on file extension (#9)
@@ -1,4 +1,5 @@
1
1
  require "jekyll-sass-converter/version"
2
+ require "jekyll/converters/scss"
2
3
  require "jekyll/converters/sass"
3
4
 
4
5
  module JekyllSassConverter
@@ -1,3 +1,3 @@
1
1
  module JekyllSassConverter
2
- VERSION = "1.0.0.rc4"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -3,64 +3,16 @@ require 'jekyll/utils'
3
3
 
4
4
  module Jekyll
5
5
  module Converters
6
- class Sass < Converter
6
+ class Sass < Scss
7
7
  safe true
8
8
  priority :low
9
9
 
10
10
  def matches(ext)
11
- ext =~ /^\.s(a|c)ss$/i
11
+ ext =~ /^\.sass$/i
12
12
  end
13
13
 
14
- def output_ext(ext)
15
- ".css"
16
- end
17
-
18
- def jekyll_sass_configuration
19
- options = @config["sass"] || {}
20
- unless options["style"].nil?
21
- options["style"] = options["style"].to_s.gsub(/\A:/, '').to_sym
22
- end
23
- options
24
- end
25
-
26
- def sass_build_configuration_options(overrides)
27
- Jekyll::Utils.symbolize_hash_keys(
28
- Jekyll::Utils.deep_merge_hashes(jekyll_sass_configuration, overrides)
29
- )
30
- end
31
-
32
- def syntax_type_of_content(content)
33
- if content.include?(";") || content.include?("{")
34
- :scss
35
- else
36
- :sass
37
- end
38
- end
39
-
40
- def sass_dir
41
- return "_sass" if jekyll_sass_configuration["sass_dir"].to_s.empty?
42
- jekyll_sass_configuration["sass_dir"]
43
- end
44
-
45
- def sass_dir_relative_to_site_source
46
- # FIXME: Not Windows-safe. Can only change once Jekyll 2.0.0 is out
47
- Jekyll.sanitized_path(@config["source"], sass_dir)
48
- end
49
-
50
- def allow_caching?
51
- !@config["safe"]
52
- end
53
-
54
- def sass_configs(content = "")
55
- sass_build_configuration_options({
56
- "syntax" => syntax_type_of_content(content),
57
- "cache" => allow_caching?,
58
- "load_paths" => [sass_dir_relative_to_site_source]
59
- })
60
- end
61
-
62
- def convert(content)
63
- ::Sass.compile(content, sass_configs(content))
14
+ def syntax
15
+ :sass
64
16
  end
65
17
  end
66
18
  end
@@ -0,0 +1,63 @@
1
+ require 'sass'
2
+ require 'jekyll/utils'
3
+
4
+ module Jekyll
5
+ module Converters
6
+ class Scss < Converter
7
+ safe true
8
+ priority :low
9
+
10
+ def matches(ext)
11
+ ext =~ /^\.scss$/i
12
+ end
13
+
14
+ def output_ext(ext)
15
+ ".css"
16
+ end
17
+
18
+ def jekyll_sass_configuration
19
+ options = @config["sass"] || {}
20
+ unless options["style"].nil?
21
+ options["style"] = options["style"].to_s.gsub(/\A:/, '').to_sym
22
+ end
23
+ options
24
+ end
25
+
26
+ def sass_build_configuration_options(overrides)
27
+ Jekyll::Utils.symbolize_hash_keys(
28
+ Jekyll::Utils.deep_merge_hashes(jekyll_sass_configuration, overrides)
29
+ )
30
+ end
31
+
32
+ def syntax
33
+ :scss
34
+ end
35
+
36
+ def sass_dir
37
+ return "_sass" if jekyll_sass_configuration["sass_dir"].to_s.empty?
38
+ jekyll_sass_configuration["sass_dir"]
39
+ end
40
+
41
+ def sass_dir_relative_to_site_source
42
+ # FIXME: Not Windows-safe. Can only change once Jekyll 2.0.0 is out
43
+ Jekyll.sanitized_path(@config["source"], sass_dir)
44
+ end
45
+
46
+ def allow_caching?
47
+ !@config["safe"]
48
+ end
49
+
50
+ def sass_configs(content = "")
51
+ sass_build_configuration_options({
52
+ "syntax" => syntax,
53
+ "cache" => allow_caching?,
54
+ "load_paths" => [sass_dir_relative_to_site_source]
55
+ })
56
+ end
57
+
58
+ def convert(content)
59
+ ::Sass.compile(content, sass_configs(content))
60
+ end
61
+ end
62
+ end
63
+ end
@@ -4,22 +4,14 @@ describe(Jekyll::Converters::Sass) do
4
4
  let(:site) do
5
5
  Jekyll::Site.new(site_configuration)
6
6
  end
7
- let(:sass_content) do
7
+ let(:content) do
8
8
  <<-SASS
9
+ // tl;dr some sass
9
10
  $font-stack: Helvetica, sans-serif
10
11
  body
11
12
  font-family: $font-stack
12
13
  font-color: fuschia
13
14
  SASS
14
- end
15
- let(:scss_content) do
16
- <<-SCSS
17
- $font-stack: Helvetica, sans-serif;
18
- body {
19
- font-family: $font-stack;
20
- font-color: fuschia;
21
- }
22
- SCSS
23
15
  end
24
16
  let(:css_output) do
25
17
  <<-CSS
@@ -36,8 +28,8 @@ CSS
36
28
  end
37
29
 
38
30
  context "matching file extensions" do
39
- it "matches .scss files" do
40
- expect(converter.matches(".scss")).to be_true
31
+ it "does not match .scss files" do
32
+ expect(converter.matches(".scss")).to be_false
41
33
  end
42
34
 
43
35
  it "matches .sass files" do
@@ -45,88 +37,10 @@ CSS
45
37
  end
46
38
  end
47
39
 
48
- context "determining the output file extension" do
49
- it "always outputs the .css file extension" do
50
- expect(converter.output_ext(".always-css")).to eql(".css")
51
- end
52
- end
53
-
54
- context "when building configurations" do
55
- it "not allow caching in safe mode" do
56
- verter = converter
57
- verter.instance_variable_get(:@config)["safe"] = true
58
- expect(verter.sass_configs[:cache]).to be_false
59
- end
60
-
61
- it "allow caching in unsafe mode" do
62
- expect(converter.sass_configs[:cache]).to be_true
63
- end
64
-
65
- it "set the load paths to the _sass dir relative to site source" do
66
- expect(converter.sass_configs[:load_paths]).to eql([source_dir("_sass")])
67
- end
68
-
69
- it "allow the user to specify a different sass dir" do
70
- expect(converter({"sass_dir" => "_scss"}).sass_configs[:load_paths]).to eql([source_dir("_scss")])
71
- end
72
-
73
- it "set syntax :scss when SCSS content" do
74
- expect(converter.sass_configs(scss_content)[:syntax]).to eql(:scss)
75
- end
76
-
77
- it "set syntax :sass when Sass content" do
78
- expect(converter.sass_configs(sass_content)[:syntax]).to eql(:sass)
79
- end
80
-
81
- it "default to :sass syntax when content is empty" do
82
- expect(converter.sass_configs[:syntax]).to eql(:sass)
83
- end
84
-
85
- it "allow for other styles" do
86
- expect(converter({"style" => :compressed}).sass_configs[:style]).to eql(:compressed)
87
- end
88
-
89
- it "not allow sass_dirs outside of site source" do
90
- expect(
91
- converter({"sass_dir" => "/etc/passwd"}).sass_dir_relative_to_site_source
92
- ).to eql(source_dir("etc/passwd"))
93
- end
94
-
95
- it "override user-set syntax based on content" do
96
- expect(
97
- converter({"syntax" => :scss}).sass_configs(sass_content)[:syntax]
98
- ).to eql(:sass)
99
- end
100
- end
101
-
102
40
  context "converting sass" do
103
41
  it "produces CSS" do
104
- expect(converter.convert(sass_content)).to eql(compressed(css_output))
105
- end
106
- end
107
-
108
- context "converting SCSS" do
109
- it "produces CSS" do
110
- expect(converter.convert(scss_content)).to eql(compressed(css_output))
42
+ expect(converter.convert(content)).to eql(compressed(css_output))
111
43
  end
112
44
  end
113
45
 
114
- context "importing partials" do
115
- let(:test_css_file) { dest_dir("css/main.css") }
116
- before(:each) { site.process }
117
-
118
- it "outputs the CSS file" do
119
- expect(File.exist?(test_css_file)).to be_true
120
- end
121
-
122
- it "imports SCSS partial" do
123
- expect(File.read(test_css_file)).to eql(compressed(".half {\n width: 50%; }\n"))
124
- end
125
-
126
- it "uses a compressed style" do
127
- instance = site.getConverterImpl(Jekyll::Converters::Sass)
128
- expect(instance.jekyll_sass_configuration).to eql({"style" => :compressed})
129
- expect(instance.sass_configs[:style]).to eql(:compressed)
130
- end
131
- end
132
46
  end
@@ -0,0 +1,101 @@
1
+ require 'spec_helper'
2
+
3
+ describe(Jekyll::Converters::Scss) do
4
+ let(:site) do
5
+ Jekyll::Site.new(site_configuration)
6
+ end
7
+ let(:content) do
8
+ <<-SCSS
9
+ $font-stack: Helvetica, sans-serif;
10
+ body {
11
+ font-family: $font-stack;
12
+ font-color: fuschia;
13
+ }
14
+ SCSS
15
+ end
16
+ let(:css_output) do
17
+ <<-CSS
18
+ body {\n font-family: Helvetica, sans-serif;\n font-color: fuschia; }
19
+ CSS
20
+ end
21
+
22
+ def compressed(content)
23
+ content.gsub(/\s+/, '').gsub(/;}/, '}') + "\n"
24
+ end
25
+
26
+ def converter(overrides = {})
27
+ Jekyll::Converters::Scss.new(site_configuration({"sass" => overrides}))
28
+ end
29
+
30
+ context "matching file extensions" do
31
+ it "matches .scss files" do
32
+ expect(converter.matches(".scss")).to be_true
33
+ end
34
+
35
+ it "does not match .sass files" do
36
+ expect(converter.matches(".sass")).to be_false
37
+ end
38
+ end
39
+
40
+ context "determining the output file extension" do
41
+ it "always outputs the .css file extension" do
42
+ expect(converter.output_ext(".always-css")).to eql(".css")
43
+ end
44
+ end
45
+
46
+ context "when building configurations" do
47
+ it "not allow caching in safe mode" do
48
+ verter = converter
49
+ verter.instance_variable_get(:@config)["safe"] = true
50
+ expect(verter.sass_configs[:cache]).to be_false
51
+ end
52
+
53
+ it "allow caching in unsafe mode" do
54
+ expect(converter.sass_configs[:cache]).to be_true
55
+ end
56
+
57
+ it "set the load paths to the _sass dir relative to site source" do
58
+ expect(converter.sass_configs[:load_paths]).to eql([source_dir("_sass")])
59
+ end
60
+
61
+ it "allow the user to specify a different sass dir" do
62
+ expect(converter({"sass_dir" => "_scss"}).sass_configs[:load_paths]).to eql([source_dir("_scss")])
63
+ end
64
+
65
+ it "allow for other styles" do
66
+ expect(converter({"style" => :compressed}).sass_configs[:style]).to eql(:compressed)
67
+ end
68
+
69
+ it "not allow sass_dirs outside of site source" do
70
+ expect(
71
+ converter({"sass_dir" => "/etc/passwd"}).sass_dir_relative_to_site_source
72
+ ).to eql(source_dir("etc/passwd"))
73
+ end
74
+ end
75
+
76
+ context "converting SCSS" do
77
+ it "produces CSS" do
78
+ expect(converter.convert(content)).to eql(compressed(css_output))
79
+ end
80
+ end
81
+
82
+ context "importing partials" do
83
+ let(:test_css_file) { dest_dir("css/main.css") }
84
+ before(:each) { site.process }
85
+
86
+ it "outputs the CSS file" do
87
+ expect(File.exist?(test_css_file)).to be_true
88
+ end
89
+
90
+ it "imports SCSS partial" do
91
+ expect(File.read(test_css_file)).to eql(compressed(".half {\n width: 50%; }\n"))
92
+ end
93
+
94
+ it "uses a compressed style" do
95
+ instance = site.getConverterImpl(Jekyll::Converters::Scss)
96
+ expect(instance.jekyll_sass_configuration).to eql({"style" => :compressed})
97
+ expect(instance.sass_configs[:style]).to eql(:compressed)
98
+ end
99
+ end
100
+
101
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-sass-converter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc4
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Parker Moore
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-27 00:00:00.000000000 Z
11
+ date: 2014-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sass
@@ -85,11 +85,13 @@ files:
85
85
  - lib/jekyll-sass-converter.rb
86
86
  - lib/jekyll-sass-converter/version.rb
87
87
  - lib/jekyll/converters/sass.rb
88
+ - lib/jekyll/converters/scss.rb
88
89
  - script/bootstrap
89
90
  - script/cibuild
90
91
  - script/release
91
92
  - spec/dest/css/main.css
92
93
  - spec/sass_coverter_spec.rb
94
+ - spec/scss_converter_spec.rb
93
95
  - spec/source/_config.yml
94
96
  - spec/source/_sass/_grid.scss
95
97
  - spec/source/css/main.scss
@@ -109,9 +111,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
109
111
  version: '0'
110
112
  required_rubygems_version: !ruby/object:Gem::Requirement
111
113
  requirements:
112
- - - ">"
114
+ - - ">="
113
115
  - !ruby/object:Gem::Version
114
- version: 1.3.1
116
+ version: '0'
115
117
  requirements: []
116
118
  rubyforge_project:
117
119
  rubygems_version: 2.2.2
@@ -121,6 +123,7 @@ summary: A basic Sass converter for Jekyll.
121
123
  test_files:
122
124
  - spec/dest/css/main.css
123
125
  - spec/sass_coverter_spec.rb
126
+ - spec/scss_converter_spec.rb
124
127
  - spec/source/_config.yml
125
128
  - spec/source/_sass/_grid.scss
126
129
  - spec/source/css/main.scss