Retrospring/app/helpers/theme_helper.rb

55 lines
1.5 KiB
Ruby
Raw Normal View History

2015-07-29 09:54:33 -07:00
module ThemeHelper
def render_theme_with_context(context = {})
klass = Class.new do
def initialize(hash = {})
if hash.is_a? ActiveRecord::Base
x = [
:primary_color, :primary_text,
:danger_color, :danger_text,
:success_color, :success_text,
:warning_color, :warning_text,
:info_color, :info_text,
:default_color, :default_text,
:panel_color, :panel_text,
:link_color, :background_color,
:background_text, :background_muted,
:input_color, :input_text,
:outline_color
]
2015-07-29 09:54:33 -07:00
x.each do |v|
next if hash[v].nil?
self.instance_variable_set "@#{v}", ('#' + ('0000000' + hash[v].to_s(16))[-6, 6])
end
elsif hash.is_a? Hash
2015-07-29 09:54:33 -07:00
hash.each do |k, v|
next unless v.is_a? Fixnum
self.instance_variable_set "@#{k}", ('#' + ('0000000' + hash[k].to_s(16))[-6, 6])
2015-07-29 09:54:33 -07:00
end
end
end
def render
style = if Rails.env == 'production'
:compressed
else
:compact
end.freeze
css = if $__THEME_CSS_CACHE_V1.nil?
2015-07-29 09:59:52 -07:00
File.read Rails.root.join 'app/views/user/theme.css.scss.erb'
else
$__THEME_CSS_CACHE_V1
2015-07-29 09:59:52 -07:00
end
erb = ERB.new css
2015-07-29 09:54:33 -07:00
sass = Sass::Engine.new erb.result(binding), style: style, cache: false, load_paths: [], syntax: :scss
return sass.render.to_s
end
end
return klass.new(context).render
end
end