15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/sassc/embedded.rb', line 15
def render
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: quiet? ? ::Sass::Logger.silent : @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
css = result.css.encode(@template.encoding)
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.decode_uri_component(Uri.relative(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
filename = (Uri.decode_uri_component(Uri.relative(url, Uri.pwd)) if url&.start_with?('file:'))
raise SyntaxError.new(e.message, filename:, line:)
end
|