class SassC::ImportHandler::Importer
def canonicalize(url, **)
def canonicalize(url, **) path = Util.file_url_to_path(url) canonical_url = Util.path_to_file_url(File.absolute_path(path)) if @importer_results.key?(canonical_url) return if @importer_results[canonical_url].nil? return canonical_url end canonical_url = "sassc-embedded:#{canonical_url}" imports = @importer.imports path, @importer.options[:filename] unless imports.is_a? Array return if imports.path == path imports = [imports] end contents = imports.map do |import| import_url = Util.path_to_file_url(File.absolute_path(import.path)) @importer_results[import_url] = if import.source { contents: import.source, syntax: case import.path when /\.sass$/i :indented when /\.css$/i :css else :scss end, source_map_url: if import.source_map_path Util.path_to_file_url( File.absolute_path(import.source_map_path, path) ) end } end "@import #{import_url.inspect};" end.join("\n") @importer_results[canonical_url] = { contents: contents, syntax: :scss } canonical_url end
def initialize(importer)
def initialize(importer) @importer = importer @importer_results = {} end
def load(canonical_url)
def load(canonical_url) @importer_results[canonical_url] end