class UserStylesheet
Attributes
env[R]
file_info[R]
scss_file[R]
scss_info[R]
scss_variables[R]
Public Class Methods
new(env:, scss_variables:, file_info:, scss_info: {})
click to toggle source
# File lib/user_stylesheet.rb, line 4 def initialize(env:, scss_variables:, file_info:, scss_info: {}) @env = env @scss_variables = OpenStruct.new(scss_variables) @file_info = file_info @scss_info = scss_info.empty? ? default_scss_info : scss_info end
Public Instance Methods
compile()
click to toggle source
# File lib/user_stylesheet.rb, line 11 def compile overwrite_scss File.write(scss_file.path, render_css) newpath = File.join(file_info[:tmp_dir], "#{file_info[:file_name]}.css") File.rename(scss_file.path, newpath) File.new(newpath) end
Private Instance Methods
asset_source()
click to toggle source
# File lib/user_stylesheet.rb, line 47 def asset_source if env.find_asset(file_info[:file_name]) env.find_asset(file_info[:file_name]).source else unloaded_asset end end
default_scss_info()
click to toggle source
# File lib/user_stylesheet.rb, line 21 def default_scss_info { syntax: :scss, cache: false, read_cache: false, style: :compressed } end
overwrite_scss()
click to toggle source
# File lib/user_stylesheet.rb, line 30 def overwrite_scss template_body = ERB.new(File.read(File.expand_path(file_info[:template_file_path]))).result(binding) @scss_file = File.open(scss_file_path, 'w') { |f| f.write(template_body); f.flush } end
render_css()
click to toggle source
# File lib/user_stylesheet.rb, line 43 def render_css Sass::Engine.new(asset_source, scss_info).render end
scss_file_dir()
click to toggle source
# File lib/user_stylesheet.rb, line 35 def scss_file_dir @scss_file_path ||= File.expand_path(file_info[:tmp_dir]) end
scss_file_path()
click to toggle source
# File lib/user_stylesheet.rb, line 39 def scss_file_path @scss_file_path ||= File.join(scss_file_dir, "#{file_info[:file_name]}.scss") end
unloaded_asset()
click to toggle source
# File lib/user_stylesheet.rb, line 55 def unloaded_asset uri = Sprockets::URIUtils.build_asset_uri(scss_file.path, type: 'text/css') asset = Sprockets::UnloadedAsset.new(uri, env) env.load(asset.uri).source end