14
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
64
|
# File 'lib/sassc/embedded.rb', line 14
def render
return @template.dup if @template.empty?
result = ::Sass.compile_string(
@template,
importer: import_handler.setup(nil),
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: @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,#{Base64.strict_encode64(@source_map)}"
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
|