module Bemonrails::BemRenderHelper
Public Instance Methods
block(b_name, builder={})
click to toggle source
# File lib/bem-on-rails/bem_render_helper.rb, line 5 def block(b_name, builder={}) unless b_name.blank? builder[:block] = b_name path = File.join path_resolve(:block, builder, false) target = File.join path, build_b(b_name) create_ctx builder update_ctx :block, b_name resolve_ctx template_exists?(target) ? render(file: target) : empty end end
content()
click to toggle source
# File lib/bem-on-rails/bem_render_helper.rb, line 101 def content render "bemonrails/essences/content" end
create_ctx(builder={})
click to toggle source
# File lib/bem-on-rails/bem_render_helper.rb, line 30 def create_ctx(builder={}) @this = {} BEM[:attrs].each do |mod| if builder[mod] @this[mod] = builder[mod] builder = builder.except(mod) end end @this[:ctx] = builder @this[:bem] ||= true @this[:attrs] ||= {} @this[:tag] ||= :div end
dom_class(essence, classes_array)
click to toggle source
# File lib/bem-on-rails/bem_render_helper.rb, line 83 def dom_class(essence, classes_array) if essence[:block] && essence[:elem] classes_array.push(build_e(essence[:block], essence[:elem])) resolve_mods(essence[:elemMods], classes_array, essence[:block], essence[:elem]) elsif essence[:block] classes_array.push(build_b(essence[:block])) resolve_mods(essence[:mods], classes_array, essence[:block]) end end
elem(e_name, builder={})
click to toggle source
# File lib/bem-on-rails/bem_render_helper.rb, line 17 def elem(e_name, builder={}) unless e_name.blank? builder[:block] = this[:block] builder[:element] = e_name path = File.join path_resolve(:element, builder, false) target = File.join path, build_e(this[:block], e_name) create_ctx builder update_ctx :element, e_name resolve_ctx template_exists?(target) ? render(file: target) : empty end end
empty()
click to toggle source
# File lib/bem-on-rails/bem_render_helper.rb, line 93 def empty "<div class=#{ @this[:attrs][:class] }></div>".html_safe end
resolve_ctx()
click to toggle source
# File lib/bem-on-rails/bem_render_helper.rb, line 56 def resolve_ctx classes_array = [] if this[:bem] dom_class(this, classes_array) resolve_mixes(this[:mix], classes_array) else classes_array.push(this[:elem] ? this[:elem] : this[:block]) end this[:attrs].merge!({class: [classes_array, this[:cls]].join(" ").strip!}) end
resolve_mixes(mixs, classes_array)
click to toggle source
# File lib/bem-on-rails/bem_render_helper.rb, line 76 def resolve_mixes(mixs, classes_array) mixs = mixs || {} mixs.each do |mix| generate_class(mix, classes_array) end end
resolve_mods(mods, classes_array, bl, el=false)
click to toggle source
# File lib/bem-on-rails/bem_render_helper.rb, line 69 def resolve_mods(mods, classes_array, bl, el=false) mods = mods || {} mods.each do |m, v| classes_array.push(build_m(build_b(bl), el ? build_e(bl, el) : nil, m.to_s, v)) end end
this()
click to toggle source
# File lib/bem-on-rails/bem_render_helper.rb, line 97 def this @this end
update_ctx(essence, name)
click to toggle source
# File lib/bem-on-rails/bem_render_helper.rb, line 46 def update_ctx(essence, name) case essence when :block @this[:block] = @block_buffer = name when :element @this[:block] = @block_buffer @this[:elem] = name end end