Class: Jekyll::Sass::SassCssGenerator
- Inherits:
-
Generator
- Object
- Generator
- Jekyll::Sass::SassCssGenerator
- Defined in:
- lib/jekyll-sass.rb
Instance Method Summary collapse
-
#generate(site) ⇒ Object
Jekyll will have already added the *.sass/scss files as Jekyll::StaticFile objects to the static_files array.
-
#recursively_search_directories(site, matcher, dir = '') ⇒ Object
Recursively find files in site that match a regexp Does not ignore underscored files This could probably be shortened but we need to search like jekyll searches.
- #suppressed_files_modified?(files) ⇒ Boolean
- #suppressed_sass_files(site) ⇒ Object
- #update_files_mtime(files) ⇒ Object
Instance Method Details
#generate(site) ⇒ Object
Jekyll will have already added the *.sass/scss files as Jekyll::StaticFile objects to the static_files array. Here we replace those with a SassCssFile object.
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/jekyll-sass.rb', line 99 def generate(site) site.static_files.clone.each do |sf| if sf.path =~ /\.(scss|sass)$/ site.static_files.delete(sf) name = File.basename(sf.path) destination = File.dirname(sf.path).sub(site.source, '') sass_file = SassCssFile.new(site, site.source, destination, name) if sass_file.modified? SassCssFile.should_write_sass = true end site.static_files << sass_file end end supp_files = suppressed_sass_files(site) if suppressed_files_modified?(supp_files) SassCssFile.should_write_sass = true update_files_mtime(supp_files) end end |
#recursively_search_directories(site, matcher, dir = '') ⇒ Object
Recursively find files in site that match a regexp Does not ignore underscored files This could probably be shortened but we need to search like jekyll searches
site - The Jekyll site matcher - a regexp for the filename’s to find dir - the relative directory to recurse in
Returns an Array of absolute paths that match
154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/jekyll-sass.rb', line 154 def recursively_search_directories(site, matcher, dir = '') base = File.join(site.source, dir) entries = Dir.chdir(base) { site.filter_entries(Dir.entries('.')) } found = [ ] entries.each do |f| f_abs = File.join(base, f) found << f_abs if matcher.match(f) if File.directory?(f_abs) f_rel = File.join(dir, f) if site.dest.sub(/\/$/, '') != f_abs more_found = recursively_search_directories(site, matcher, f_rel) found.concat(more_found) end end end return found end |
#suppressed_files_modified?(files) ⇒ Boolean
119 120 121 122 123 124 |
# File 'lib/jekyll-sass.rb', line 119 def suppressed_files_modified?(files) files.each do |file| return true if file.modified? end return false end |
#suppressed_sass_files(site) ⇒ Object
132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/jekyll-sass.rb', line 132 def suppressed_sass_files(site) sass_matcher = /^_.*\.(sass|scss)/ suppressed_sass_paths = recursively_search_directories(site, sass_matcher) files = [ ] suppressed_sass_paths.each do |path| name = File.basename(path) destination = File.dirname(path).sub(site.source, '') files << SuppressedSassFile.new(site, site.source, destination, name) end return files end |
#update_files_mtime(files) ⇒ Object
126 127 128 129 130 |
# File 'lib/jekyll-sass.rb', line 126 def update_files_mtime(files) files.each do |file| file.update_mtime end end |