class Jekyll::Converters::Scss
Constants
- ALLOWED_STYLES
- BYTE_ORDER_MARK
- SyntaxError
Public Instance Methods
add_charset?()
click to toggle source
# File lib/jekyll/converters/scss.rb, line 106 def add_charset? !!jekyll_sass_configuration["add_charset"] end
allow_caching?()
click to toggle source
# File lib/jekyll/converters/scss.rb, line 102 def allow_caching? !safe? end
convert(content)
click to toggle source
# File lib/jekyll/converters/scss.rb, line 118 def convert(content) output = ::Sass.compile(content, sass_configs) replacement = add_charset? ? '@charset "UTF-8";' : "" output.sub(BYTE_ORDER_MARK, replacement) rescue ::Sass::SyntaxError => e raise SyntaxError, "#{e} on line #{e.sass_line}" end
jekyll_sass_configuration()
click to toggle source
# File lib/jekyll/converters/scss.rb, line 29 def jekyll_sass_configuration options = @config["sass"] || {} unless options["style"].nil? options["style"] = options["style"].to_s.gsub(%r!\A:!, "").to_sym end options end
matches(ext)
click to toggle source
# File lib/jekyll/converters/scss.rb, line 17 def matches(ext) ext =~ %r!^\.scss$!i end
output_ext(_ext)
click to toggle source
# File lib/jekyll/converters/scss.rb, line 21 def output_ext(_ext) ".css" end
safe?()
click to toggle source
# File lib/jekyll/converters/scss.rb, line 25 def safe? !!@config["safe"] end
sass_build_configuration_options(overrides)
click to toggle source
# File lib/jekyll/converters/scss.rb, line 37 def sass_build_configuration_options(overrides) if safe? { :load_paths => sass_load_paths, :syntax => syntax, :style => sass_style, :cache => false, } else Jekyll::Utils.symbolize_hash_keys( Jekyll::Utils.deep_merge_hashes( jekyll_sass_configuration, overrides ) ) end end
sass_configs()
click to toggle source
# File lib/jekyll/converters/scss.rb, line 110 def sass_configs sass_build_configuration_options({ "syntax" => syntax, "cache" => allow_caching?, "load_paths" => sass_load_paths, }) end
sass_dir()
click to toggle source
# File lib/jekyll/converters/scss.rb, line 59 def sass_dir return "_sass" if jekyll_sass_configuration["sass_dir"].to_s.empty? jekyll_sass_configuration["sass_dir"] end
sass_dir_relative_to_site_source()
click to toggle source
# File lib/jekyll/converters/scss.rb, line 73 def sass_dir_relative_to_site_source Jekyll.sanitized_path(site_source, sass_dir) end
sass_load_paths()
click to toggle source
# File lib/jekyll/converters/scss.rb, line 77 def sass_load_paths paths = user_sass_load_paths + [sass_dir_relative_to_site_source] if safe? # Sanitize paths to prevent any attack vectors (.e.g. `/**/*`) paths.map! { |path| Jekyll.sanitized_path(site_source, path) } end # Expand file globs (e.g. `node_modules/*/node_modules` ) Dir.chdir(site_source) do paths = paths.map { |path| Dir.glob(path) }.flatten.uniq paths.map! do |path| if safe? # Sanitize again in case globbing was able to do something crazy. Jekyll.sanitized_path(site_source, path) else File.expand_path(path) end end end paths.select { |path| File.directory?(path) } end
sass_style()
click to toggle source
# File lib/jekyll/converters/scss.rb, line 64 def sass_style style = jekyll_sass_configuration.fetch("style", :compact) ALLOWED_STYLES.include?(style.to_s) ? style.to_sym : :compact end
syntax()
click to toggle source
# File lib/jekyll/converters/scss.rb, line 55 def syntax :scss end
user_sass_load_paths()
click to toggle source
# File lib/jekyll/converters/scss.rb, line 69 def user_sass_load_paths Array(jekyll_sass_configuration["load_paths"]) end
Private Instance Methods
site_source()
click to toggle source
# File lib/jekyll/converters/scss.rb, line 127 def site_source @site_source ||= File.expand_path(@config["source"]).freeze end