class SassC::Engine
def render
def render return @template.dup if @template.empty? base_importer = import_handler.setup(nil) result = ::Sass.compile_string( @template, importer: base_importer, load_paths: load_paths, syntax: syntax, url: file_url, charset: @options.fetch(:charset, true), source_map: source_map_embed? || !source_map_file.nil?, source_map_include_sources: source_map_contents?, style: output_style, functions: functions_handler.setup(nil, functions: @functions), importers: (base_importer.nil? ? [] : [base_importer]).concat(@options.fetch(:importers, [])), alert_ascii: @options.fetch(:alert_ascii, false), alert_color: @options.fetch(:alert_color, nil), logger: @options.fetch(:logger, nil), quiet_deps: @options.fetch(:quiet_deps, false), verbose: @options.fetch(:verbose, false) ) @loaded_urls = result.loaded_urls @source_map = result.source_map return if quiet? css = result.css css += "\n" unless css.empty? unless @source_map.nil? || omit_source_map_url? url = URL.parse(output_url || file_url) source_mapping_url = if source_map_embed? "data:application/json;base64,#{[@source_map].pack('m0')}" else URL.parse(source_map_file_url).route_from(url).to_s end css += "\n/*# sourceMappingURL=#{source_mapping_url} */" end css rescue ::Sass::CompileError => e @loaded_urls = e.loaded_urls line = e.span&.start&.line line += 1 unless line.nil? url = e.span&.url path = (URL.parse(url).route_from(URL.path_to_file_url("#{Dir.pwd}/")) if url&.start_with?(Protocol::FILE)) raise SyntaxError.new(e.full_message, filename: path, line: line) end