File: adapters.rb

package info (click to toggle)
ruby-compass 0.12.2~dfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 8,308 kB
  • sloc: ruby: 10,474; makefile: 42; xml: 14
file content (77 lines) | stat: -rw-r--r-- 2,897 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
module Compass
  module Configuration
    # The adapters module provides methods that make configuration data from a compass project
    # adapt to various consumers of configuration data
    module Adapters
      def to_compiler_arguments(additional_options = {})
        [project_path, sass_path, css_path, to_sass_engine_options.merge(additional_options)]
      end

      def to_sass_plugin_options
        locations = []
        locations << [sass_path, css_path] if sass_path && css_path
        Compass::Frameworks::ALL.each do |framework|
          locations << [framework.stylesheets_directory, File.join(css_path || css_dir || ".", framework.name)]
        end
        load_paths = []
        resolve_additional_import_paths.each do |additional_path|
          if additional_path.is_a?(String)
            locations << [additional_path, File.join(css_path || css_dir || ".", File.basename(additional_path))]
          else
            load_paths << additional_path
          end
        end
        plugin_opts = {:template_location => locations}
        plugin_opts[:style] = output_style if output_style
        plugin_opts[:line_comments] = line_comments
        plugin_opts[:cache] = cache unless cache.nil?
        plugin_opts[:cache_location] = cache_path unless cache_path.nil?
        plugin_opts.merge!(sass_options || {})
        plugin_opts[:load_paths] ||= []
        plugin_opts[:load_paths] += load_paths
        plugin_opts[:load_paths] << Compass::SpriteImporter.new
        plugin_opts
      end

      def resolve_additional_import_paths
        (additional_import_paths || []).map do |path|
          if path.is_a?(String) && project_path && !absolute_path?(path)
            File.join(project_path, path)
          else
            path
          end
        end
      end

      def absolute_path?(path)
        # Pretty basic implementation
        path.index(File::SEPARATOR) == 0 || path.index(':') == 1
      end

      def to_sass_engine_options
        engine_opts = {:load_paths => sass_load_paths}
        engine_opts[:style] = output_style if output_style
        engine_opts[:line_comments] = line_comments
        engine_opts[:cache] = cache
        engine_opts[:cache_location] = cache_path
        engine_opts[:quiet] = disable_warnings if disable_warnings
        engine_opts.merge!(sass_options || {})
      end

      def sass_load_paths
        load_paths = []
        load_paths << sass_path if sass_path
        Compass::Frameworks::ALL.each do |f|
          load_paths << f.stylesheets_directory if File.directory?(f.stylesheets_directory)
        end
        load_paths += resolve_additional_import_paths
        load_paths.map! do |p|
          next p if p.respond_to?(:find_relative)
          Sass::Importers::Filesystem.new(p.to_s)
        end
        load_paths << Compass::SpriteImporter.new
        load_paths
      end
    end
  end
end