jekyll-compass 0.1.1 → 0.2

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: af6b72faa6c232bd50fa6c797650ca19e6a8be46
4
- data.tar.gz: af2150a2f28661efce7de3b9f65b6a2da6539a84
3
+ metadata.gz: a4f08a754e0245590b9fb9cadd5185c6eebfc1d2
4
+ data.tar.gz: 01bfe21b9ff8e152de5f104d0f3056016797aa56
5
5
  SHA512:
6
- metadata.gz: 32c346c04caf83b403b0b7385243bdbf78202c9be03d166cdc91a61df20bf17cd2bbd4c9167fe89a9a3a592dc4f1db0f2abc61a59e2de094337fb3293de3b96d
7
- data.tar.gz: c2df57c0f974093a4c353c7bb0952a3de53d854c5e33bc25723103bf84612ab7e2b3ab6322570477d1b6da4cb775075ba704554a90195ec358f7523d4cf771da
6
+ metadata.gz: 4891eb6b6c8fdb020c675fa0e94436722738fc39e501189bfda816b1d03511fc73621a6f2cfd587cba6e628e4112969f3f64624a06308779dd4c7b8d24517bbf
7
+ data.tar.gz: 81b74704078e9a640e23ba6c592eb7caec613a24d6c3124a0ecc3f8d0a87f2b806832d0532d87b8a7e4c396de523cbede8f430cdba8af1970ec867d697d7a81f
@@ -0,0 +1,30 @@
1
+ class Hash
2
+ # Merges self with another hash, recursively.
3
+ #
4
+ # Returns the merged self.
5
+ def deep_merge!(hash)
6
+ hash.keys.each do |key|
7
+ if hash[key].is_a? Hash and self[key].is_a? Hash
8
+ self[key] = self[key].deep_merge!(hash[key])
9
+ next
10
+ end
11
+
12
+ self[key] = hash[key]
13
+ end
14
+
15
+ self
16
+ end
17
+
18
+ # Turn all String keys of into symbols, and return in other Hash.
19
+ #
20
+ # Returns the symbolized copy of self.
21
+ def symbolize_keys
22
+ target = self.dup
23
+
24
+ keys.each do |key|
25
+ self[(key.to_sym rescue key) || key] = delete(key)
26
+ end
27
+
28
+ target
29
+ end
30
+ end
@@ -4,6 +4,8 @@ require 'compass'
4
4
  require 'compass/commands'
5
5
  require 'fileutils'
6
6
 
7
+ require 'jekyll/compass/core_ext'
8
+
7
9
  module Jekyll
8
10
  class CompassFile < StaticFile
9
11
  def write(destination)
@@ -17,54 +19,68 @@ module Jekyll
17
19
  priority :high
18
20
 
19
21
  def generate(site)
20
- input = File.join(site.source, '_sass')
22
+ @site = site
23
+ input_directory = File.join(@site.source, '_sass')
21
24
 
22
- return unless File.exist? input
25
+ return unless File.exist? input_directory
23
26
  puts
24
27
 
25
- output = File.join(site.config['destination'], 'css')
28
+ config = configuration(@site.source, input_directory, File.join(@site.config['destination'], 'css'))
29
+ configure_compass(config)
30
+
31
+ ::Compass::Commands::UpdateProject.new(site.config['source'], config).execute
32
+ nil
33
+ end
34
+
35
+ private
26
36
 
37
+ def configuration(source, input_directory, output_directory)
27
38
  config = {
28
- :project_path => site.source,
39
+ :project_path => source,
29
40
  :http_path => '/',
30
- :sass_path => input,
31
- :css_path => output,
32
- :images_path => File.join(site.source, 'images'),
33
- :javascripts_path => File.join(site.source, 'js'),
34
- :line_comments => false,
41
+ :sass_path => input_directory,
42
+ :css_path => output_directory,
43
+ :images_path => File.join(source, 'images'),
44
+ :javascripts_path => File.join(source, 'js'),
35
45
  :environment => :production,
36
46
  :output_style => :compact,
37
- :force => true,
38
- #:quiet => true,
39
- :sass_options => {
40
- :unix_newlines => true,
41
- },
42
47
  }
43
48
 
49
+ user_config = @site.config['compass']
50
+ config.deep_merge!(user_config.symbolize_keys) if user_config
51
+ user_data = @site.data['compass']
52
+ config.deep_merge!(user_data.symbolize_keys) if user_data
53
+
54
+ config
55
+ end
56
+
57
+ def configure_compass(config)
44
58
  ::Compass.add_configuration(config, 'Jekyll::Compass')
45
- ::Compass.configuration.on_sprite_saved do |filename|
46
- site.static_files << StaticFile.new(site, site.source, File.dirname(filename)[site.source.length..-1], File.basename(filename))
47
- end
48
- ::Compass.configuration.on_stylesheet_saved do |filename|
49
- source = site.config['destination']
50
- site.static_files << CompassFile.new(site, source, File.dirname(filename)[source.length..-1], File.basename(filename))
51
- end
52
59
 
53
- # Manually mangle the output directory to keep it in sync with what Compass expects and Jekyll produces
54
- ::Compass.configuration.on_sprite_removed do |filename|
55
- site.static_files = site.static_files.select do |p|
56
- if p.path == filename
57
- sprite_output = p.destination(site.config['destination'])
58
- File.delete sprite_output if File.exist? sprite_output
59
- false
60
- else
61
- true
62
- end
60
+ ::Compass.configuration.on_stylesheet_saved &method(:on_stylesheet_saved)
61
+ ::Compass.configuration.on_sprite_saved &method(:on_sprite_saved)
62
+ ::Compass.configuration.on_sprite_removed &method(:on_sprite_removed)
63
+ end
64
+
65
+ def on_stylesheet_saved(filename)
66
+ source = @site.config['destination']
67
+ @site.static_files << CompassFile.new(@site, source, File.dirname(filename)[source.length..-1], File.basename(filename))
68
+ end
69
+
70
+ def on_sprite_saved(filename)
71
+ @site.static_files << StaticFile.new(@site, @site.source, File.dirname(filename)[@site.source.length..-1], File.basename(filename))
72
+ end
73
+
74
+ def on_sprite_removed(filename)
75
+ @site.static_files = @site.static_files.select do |p|
76
+ if p.path == filename
77
+ sprite_output = p.destination(@site.config['destination'])
78
+ File.delete sprite_output if File.exist? sprite_output
79
+ false
80
+ else
81
+ true
63
82
  end
64
83
  end
65
-
66
- ::Compass::Commands::UpdateProject.new(site.config['source'], config).execute
67
- nil
68
84
  end
69
85
  end
70
86
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-compass
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: '0.2'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Scharley
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-12-12 00:00:00.000000000 Z
11
+ date: 2013-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: compass
@@ -46,6 +46,7 @@ executables: []
46
46
  extensions: []
47
47
  extra_rdoc_files: []
48
48
  files:
49
+ - lib/jekyll/compass/core_ext.rb
49
50
  - lib/jekyll/compass.rb
50
51
  - lib/jekyll-compass.rb
51
52
  - README.md