Sha256: 67176101d0ff80f7204523b53b9b39cdc760867efd1043886a9879c2e0388009

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

require 'sass'

module Jekyll
  module Converters
    class Sass < Converter
      safe true
      priority :low

      def matches(ext)
        ext =~ /^\.s(a|c)ss$/i
      end

      def output_ext(ext)
        ".css"
      end

      def jekyll_sass_configuration
        @config["sass"] || {}
      end

      def sass_build_configuration_options(overrides)
        jekyll_sass_configuration.deep_merge(overrides).symbolize_keys
      end

      def syntax_type_of_content(content)
        if content.include?(";") || content.include?("{")
          :scss
        else
          :sass
        end
      end

      def sass_dir
        return "_sass" if jekyll_sass_configuration["sass_dir"].to_s.empty?
        jekyll_sass_configuration["sass_dir"]
      end

      def sass_dir_relative_to_site_source
        # FIXME: Not Windows-safe. Can only change once Jekyll 2.0.0 is out
        # Jekyll.sanitized_path(@config["source"], sass_dir)
        File.join(
          @config["source"],
          File.expand_path(sass_dir, "/")
        )
      end

      def allow_caching?
        !@config["safe"]
      end

      def sass_configs(content = "")
        sass_build_configuration_options({
          "syntax" => syntax_type_of_content(content),
          "cache"  => allow_caching?,
          "load_paths" => [sass_dir_relative_to_site_source]
        })
      end

      def convert(content)
        ::Sass.compile(content, sass_configs(content))
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jekyll-sass-converter-1.0.0.rc1 lib/jekyll/converters/sass.rb