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