class SassC::Engine

def render

def render
  return @template.dup if @template.empty?
  result = ::Sass.compile_string(
    @template,
    importer: (NoopImporter unless @options[:importer].nil?),
    load_paths:,
    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: import_handler.setup(nil).concat(@options.fetch(:importers, [])),
    alert_ascii: @options.fetch(:alert_ascii, false),
    alert_color: @options.fetch(:alert_color, nil),
    fatal_deprecations: @options.fetch(:fatal_deprecations, []),
    future_deprecations: @options.fetch(:future_deprecations, []),
    logger: @options.fetch(:logger, nil),
    quiet_deps: @options.fetch(:quiet_deps, false),
    silence_deprecations: @options.fetch(:silence_deprecations, []),
    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?
    source_mapping_url = if source_map_embed?
                           "data:application/json;base64,#{[@source_map].pack('m0')}"
                         else
                           Uri.file_urls_to_relative_url(source_map_file_url, file_url)
                         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 = (Uri.file_urls_to_relative_path(url, Uri.path_to_file_url("#{Dir.pwd}/")) if url&.start_with?('file:'))
  raise SyntaxError.new(e.full_message, filename: path, line:)
end