jekyll-sass 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,6 +3,21 @@ require "jekyll-sass/version"
3
3
  module Jekyll
4
4
  module Sass
5
5
  require 'sass'
6
+
7
+ class SassConfig
8
+ def self.generate()
9
+ config = Hash["style", :compressed, "syntax", :scss]
10
+ if Jekyll.configuration({}).has_key?('sass')
11
+ config.merge!(Jekyll.configuration({})['sass']) {|key,v1,v2| v2.to_sym}
12
+ end
13
+ config
14
+ end
15
+
16
+ def self.get()
17
+ @config ||= generate()
18
+ end
19
+ end
20
+
6
21
  class SassCssFile < StaticFile
7
22
 
8
23
  # Obtain destination path.
@@ -10,14 +25,16 @@ module Jekyll
10
25
  #
11
26
  # Returns destination file path.
12
27
  def destination(dest)
13
- File.join(dest, @dir, @name.sub(/scss$/, 'css'))
28
+ syntax = SassConfig.get()['syntax'].to_s
29
+ File.join(dest, @dir, @name.sub(/#{syntax}$/, 'css'))
14
30
  end
15
31
 
16
- # Convert the scss file into a css file.
32
+ # Convert the sass/scss file into a css file.
17
33
  # +dest+ is the String path to the destination dir
18
34
  #
19
35
  # Returns false if the file was not modified since last time (no-op).
20
36
  def write(dest)
37
+ config = SassConfig.get()
21
38
  dest_path = destination(dest)
22
39
 
23
40
  return false if File.exist? dest_path and !modified?
@@ -26,7 +43,7 @@ module Jekyll
26
43
  FileUtils.mkdir_p(File.dirname(dest_path))
27
44
  begin
28
45
  content = File.read(path)
29
- engine = ::Sass::Engine.new( content, :syntax => :scss, :load_paths => ["#{@site.source}#{@dir}"], :style => :compressed )
46
+ engine = ::Sass::Engine.new( content, :syntax => config['syntax'], :load_paths => ["#{@site.source}#{@dir}"], :style => config['style'] )
30
47
  content = engine.render
31
48
  File.open(dest_path, 'w') do |f|
32
49
  f.write(content)
@@ -44,12 +61,13 @@ module Jekyll
44
61
  class SassCssGenerator < Generator
45
62
  safe true
46
63
 
47
- # Jekyll will have already added the *.scss files as Jekyll::StaticFile
64
+ # Jekyll will have already added the *.sass/scss files as Jekyll::StaticFile
48
65
  # objects to the static_files array. Here we replace those with a
49
66
  # SassCssFile object.
50
67
  def generate(site)
68
+ syntax = SassConfig.get()['syntax'].to_s
51
69
  site.static_files.clone.each do |sf|
52
- if sf.kind_of?(Jekyll::StaticFile) && sf.path =~ /\.scss$/
70
+ if sf.kind_of?(Jekyll::StaticFile) && sf.path =~ /\.#{syntax}$/
53
71
  site.static_files.delete(sf)
54
72
  name = File.basename(sf.path)
55
73
  destination = File.dirname(sf.path).sub(site.source, '')
@@ -57,6 +75,8 @@ module Jekyll
57
75
  end
58
76
  end
59
77
  end
78
+
60
79
  end
80
+
61
81
  end
62
82
  end
@@ -1,5 +1,5 @@
1
1
  module Jekyll
2
2
  module Sass
3
- VERSION = "1.0.0"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  end
data/readme.md CHANGED
@@ -1,4 +1,4 @@
1
- Less for Jekyll
1
+ Sass for Jekyll
2
2
  ===============
3
3
 
4
4
  This gem provides a [Jekyll](http://github.com/mojombo/jekyll) converter for
@@ -10,31 +10,39 @@ Install the gem:
10
10
 
11
11
  [sudo] gem install jekyll-sass
12
12
 
13
- In a plugin file within your Jekyll project's _plugins directory:
13
+ In a plugin file within your Jekyll project's `_plugins` directory:
14
14
 
15
15
  # _plugins/my-plugin.rb
16
16
  require "jekyll-sass"
17
17
 
18
18
  Place .scss files anywhere in your Jekyll project's directory. These will be
19
19
  converted to .css files with the same directory path and filename. For example,
20
- if you create a Less file at _css/my-stuff/styles.scss, then the corresponding
21
- css file would end up at _css/my-stuff/styles.css_.
20
+ if you create a Less file at `css/my-stuff/styles.scss`, then the corresponding
21
+ css file would end up at `css/my-stuff/styles.css`.
22
22
 
23
23
  Bundler Setup
24
24
  -------------
25
- Already using bundler to manage gems for your Jekyll project? Then just add
25
+ Using bundler to manage gems for your Jekyll project? Just add
26
26
 
27
27
  gem "jekyll-sass"
28
28
 
29
- to your gemfile and create the following plugin in your projects _plugins
30
- directory. I've called mine bundler.rb. This will automatically require all
31
- of the gems specified in your Gemfile.
29
+ to your gemfile and create the following plugin in your projects `_plugins`
30
+ directory. This will automatically require all of the gems specified in your Gemfile.
32
31
 
33
32
  # _plugins/bundler.rb
34
33
  require "rubygems"
35
34
  require "bundler/setup"
36
35
  Bundler.require(:default)
37
36
 
37
+ Configuration
38
+ -------------
39
+ In your `_config.yml`
40
+
41
+ # defaults
42
+ sass:
43
+ syntax: scss # scss|sass
44
+ style: compressed # nested|expanded|compact|compressed
45
+
38
46
  Credit
39
47
  ------
40
- This gem is based on [Roger López's](https://github.com/zroger) [jekyll-less](https://github.com/zroger/jekyll-less).
48
+ This gem is based on [Roger López's](https://github.com/zroger) [jekyll-less](https://github.com/zroger/jekyll-less), with contributions from [Joe Buszkiewic](https://github.com/zznq).
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: jekyll-sass
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.0
5
+ version: 1.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jason Kozak
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2012-07-01 00:00:00 Z
13
+ date: 2012-11-20 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: jekyll