class RailsBootstrapTabs::Renderers::TabsRenderer

Constants

Tab

Public Class Methods

new(template, *args, &block) click to toggle source
# File lib/rails-bootstrap-tabs/renderers/tabs_renderer.rb, line 3
def initialize(template, *args, &block)
  @template = template
  @args = args || []
  @options = args[0] || {}
  @block = block
  @tabs = []
end

Public Instance Methods

method_missing(*args, &block) click to toggle source
# File lib/rails-bootstrap-tabs/renderers/tabs_renderer.rb, line 98
def method_missing(*args, &block)
  @template.send(*args, &block)
end
prepare_tabs() click to toggle source
# File lib/rails-bootstrap-tabs/renderers/tabs_renderer.rb, line 22
def prepare_tabs
  @tabs.each.with_index do |tab, index|
    tab.options[:anchor] ||= "tab-#{index}-#{rstr(index)}"
    if tab.options[:fade_effect].nil?
      if @options.key?(:fade_effect)
        tab.options[:fade_effect] = @options[:fade_effect]
      else
        tab.options[:fade_effect] = RailsBootstrapTabs.fade_effect
      end
    end
    if tab.options[:nav_markup].nil?
      if @options.key?(:nav_markup)
        tab.options[:nav_markup] = @options[:nav_markup]
      else
        tab.options[:nav_markup] = RailsBootstrapTabs.nav_markup
      end
    end
  end
  active_tab = @tabs.find { |t| t.options[:active] }
  active_tab ||= @tabs.first
  @tabs.each { |t| t.options.delete(:active) }
  active_tab.options[:active] = true if active_tab
end
render() click to toggle source
# File lib/rails-bootstrap-tabs/renderers/tabs_renderer.rb, line 16
def render
  @block.call(Context.new(self))
  prepare_tabs
  render_tabs(@tabs) + render_panes(@tabs, @options)
end
render_pane(tab) click to toggle source
# File lib/rails-bootstrap-tabs/renderers/tabs_renderer.rb, line 78
def render_pane(tab)
  raise "Must be redefined"
end
render_panes(tabs, options) click to toggle source
# File lib/rails-bootstrap-tabs/renderers/tabs_renderer.rb, line 56
def render_panes(tabs, options)
  render_panes_wrapper(options) do
    tabs.map do |tab|
      render_pane(tab) do
        tab.block.call if tab.block
      end
    end.join("\n").html_safe
  end
end
render_panes_wrapper(options) click to toggle source
# File lib/rails-bootstrap-tabs/renderers/tabs_renderer.rb, line 74
def render_panes_wrapper(options)
  raise "Must be redefined"
end
render_tab(tab) click to toggle source
# File lib/rails-bootstrap-tabs/renderers/tabs_renderer.rb, line 70
def render_tab(tab)
  raise "Must be redefined"
end
render_tabs(tabs) click to toggle source
# File lib/rails-bootstrap-tabs/renderers/tabs_renderer.rb, line 46
def render_tabs(tabs)
  render_tabs_wrapper do
    tabs.map do |tab|
      render_tab(tab) do
        tab.name
      end
    end.join("\n").html_safe
  end
end
render_tabs_wrapper() click to toggle source
# File lib/rails-bootstrap-tabs/renderers/tabs_renderer.rb, line 66
def render_tabs_wrapper
  raise "Must be redefined"
end
rstr(seed) click to toggle source
# File lib/rails-bootstrap-tabs/renderers/tabs_renderer.rb, line 11
def rstr(seed)
  rnd = Random.new(seed)
  (0...8).map { ('a'.ord + rnd.rand(26)).chr }.join
end
tab(name, options, &block) click to toggle source
# File lib/rails-bootstrap-tabs/renderers/tabs_renderer.rb, line 82
def tab(name, options, &block)
  @tabs << Tab.new(name, options, block)
end