class SassC::Engine

Experimental RBS support (using type sampling data from the type_fusion project).

# sig/sassc/engine.rbs

class SassC::Engine
  def filename: () -> String
end

def dependencies

def dependencies
  raise NotRenderedError unless @dependencies
  Dependency.from_filenames(@dependencies)
end

def filename

Experimental RBS support (using type sampling data from the type_fusion project).

def filename: () -> String

This signature was generated using 1 sample from 1 application.

def filename
  @options[:filename]
end

def functions_handler

def functions_handler
  @functions_handler = FunctionsHandler.new(@options)
end

def import_handler

def import_handler
  @import_handler ||= ImportHandler.new(@options)
end

def initialize(template, options = {})

def initialize(template, options = {})
  @template = template
  @options = options
  @functions = options.fetch(:functions, Script::Functions)
end

def line_comments?

def line_comments?
  @options[:line_comments]
end

def load_paths

def load_paths
  paths = (@options[:load_paths] || []) + SassC.load_paths
  paths.join(File::PATH_SEPARATOR) unless paths.empty?
end

def omit_source_map_url?

def omit_source_map_url?
  @options[:omit_source_map_url]
end

def output_style

def output_style
  @output_style ||= begin
    style = @options.fetch(:style, :sass_style_nested).to_s
    style = "sass_style_#{style}" unless style.include?("sass_style_")
    style = style.to_sym
    raise InvalidStyleError unless Native::SassOutputStyle.symbols.include?(style)
    style
  end
end

def output_style_enum

def output_style_enum
  @output_style_enum ||= Native::SassOutputStyle[output_style]
end

def precision

def precision
  @options[:precision]
end

def quiet?

def quiet?
  @options[:quiet]
end

def render

def render
  return @template.dup if @template.empty?
  data_context = Native.make_data_context(@template)
  context = Native.data_context_get_context(data_context)
  native_options = Native.context_get_options(context)
  Native.option_set_is_indented_syntax_src(native_options, true) if sass?
  Native.option_set_input_path(native_options, filename) if filename
  Native.option_set_precision(native_options, precision) if precision
  Native.option_set_include_path(native_options, load_paths)
  Native.option_set_output_style(native_options, output_style_enum)
  Native.option_set_source_comments(native_options, true) if line_comments?
  Native.option_set_source_map_file(native_options, source_map_file) if source_map_file
  Native.option_set_source_map_embed(native_options, true) if source_map_embed?
  Native.option_set_source_map_contents(native_options, true) if source_map_contents?
  Native.option_set_omit_source_map_url(native_options, true) if omit_source_map_url?
  import_handler.setup(native_options)
  functions_handler.setup(native_options, functions: @functions)
  status = Native.compile_data_context(data_context)
  if status != 0
    message = Native.context_get_error_message(context)
    filename = Native.context_get_error_file(context)
    line = Native.context_get_error_line(context)
    raise SyntaxError.new(message, filename: filename, line: line)
  end
  css = Native.context_get_output_string(context)
  @dependencies = Native.context_get_included_files(context)
  @source_map   = Native.context_get_source_map_string(context)
  css.force_encoding(@template.encoding)
  @source_map.force_encoding(@template.encoding) if @source_map.is_a?(String)
  return css unless quiet?
ensure
  Native.delete_data_context(data_context) if data_context
end

def sass?

def sass?
  @options[:syntax] && @options[:syntax].to_sym == :sass
end

def source_map

def source_map
  raise NotRenderedError unless @source_map
  @source_map
end

def source_map_contents?

def source_map_contents?
  @options[:source_map_contents]
end

def source_map_embed?

def source_map_embed?
  @options[:source_map_embed]
end

def source_map_file

def source_map_file
  @options[:source_map_file]
end