class Card::Bootstrap::Component
render components of bootstrap library
Public Class Methods
new(context, *args, &block)
click to toggle source
# File lib/card/bootstrap/component.rb, line 7 def initialize context, *args, &block @context = context @content = ["".html_safe] @args = args @child_args = [] @append = [] @wrap = [] @build_block = block @html = Builder::XmlMarkup.new end
Public Instance Methods
append(&block)
click to toggle source
# File lib/card/bootstrap/component.rb, line 32 def append &block @append[-1] << block end
card()
click to toggle source
# File lib/card/bootstrap/component.rb, line 40 def card @context.context.card end
insert(&block)
click to toggle source
# File lib/card/bootstrap/component.rb, line 28 def insert &block instance_exec(&block) end
prepend(&block)
click to toggle source
# File lib/card/bootstrap/component.rb, line 22 def prepend &block tmp = @content.pop instance_exec(&block) @content << tmp end
render()
click to toggle source
# File lib/card/bootstrap/component.rb, line 18 def render @rendered = render_content end
wrap(tag=nil, &block)
click to toggle source
# File lib/card/bootstrap/component.rb, line 36 def wrap tag=nil, &block @wrap[-1] << (block_given? ? block : tag) end
Private Instance Methods
add_classes(opts, html_class, optional_classes)
click to toggle source
# File lib/card/bootstrap/component.rb, line 99 def add_classes opts, html_class, optional_classes prepend_class opts, html_class if html_class Array.wrap(optional_classes).each do |k, v| prepend_class opts, v if opts.delete k end end
add_content(content)
click to toggle source
# File lib/card/bootstrap/component.rb, line 71 def add_content content @content[-1] << "\n#{content}".html_safe if content.present? end
generate_content(content, processor, &block)
click to toggle source
# File lib/card/bootstrap/component.rb, line 58 def generate_content content, processor, &block content = instance_exec(&block) if block.present? return content if !processor || !content.is_a?(Array) content.each { |item| send processor, item } "" end
items_from_args(args)
click to toggle source
# File lib/card/bootstrap/component.rb, line 87 def items_from_args args ((args.one? && args.last.is_a?(String)) || args.last.is_a?(Array)) && args.pop end
render_content()
click to toggle source
# File lib/card/bootstrap/component.rb, line 53 def render_content # if @build_block.arity > 0 instance_exec(*@args, &@build_block) end
standardize_args(args, &block)
click to toggle source
# File lib/card/bootstrap/component.rb, line 75 def standardize_args args, &block opts = standardize_opts args items = items_from_args args opts, args = standardize_block_args opts, args, &block if block.present? [items, opts, args] end
standardize_block_args(opts, args, &block)
click to toggle source
# File lib/card/bootstrap/component.rb, line 91 def standardize_block_args opts, args, &block instance_exec(opts, args, &block).tap do |s_opts, _s_args| unless s_opts.is_a? Hash raise Card::Error, "first return value of a tag block has to be a hash" end end end
standardize_opts(args)
click to toggle source
# File lib/card/bootstrap/component.rb, line 83 def standardize_opts args args.last.is_a?(Hash) ? args.pop : {} end
tag_method_opts(args, html_class, tag_opts, &tag_opts_block)
click to toggle source
# File lib/card/bootstrap/component.rb, line 46 def tag_method_opts args, html_class, tag_opts, &tag_opts_block opts = {} _blah, opts, _blah = standardize_args args, &tag_opts_block if block_given? add_classes opts, html_class, tag_opts.delete(:optional_classes) opts end
with_child_args(args) { || ... }
click to toggle source
# File lib/card/bootstrap/component.rb, line 66 def with_child_args args @child_args << args if args.present? yield.tap { @child_args.pop if args.present? } end