module Wallaby::BaseHelper

NOTE: Global helper methods should go in here

Public Instance Methods

body_class() click to toggle source

Generate body class from the following sources:

  • `:action` parameter

  • converted current resources name (e.g. `order__item` from `Order::Item`)

  • `:custom_body_class` content

@return [String] css classes for body tag

# File lib/helpers/wallaby/base_helper.rb, line 26
def body_class
  [
    params[:action],
    controller_path.gsub(SLASH, '__'),
    current_resources_name.try(:gsub, COLONS, '__'),
    content_for(:custom_body_class)
  ].compact.join SPACE
end
model_classes(classes = Map.model_classes) click to toggle source

Turn a list of classes into tree structure by inheritance. @param classes [Array<Class>]

a list of all the classes that wallaby supports

@return [Array<Wallaby::Node>] a tree structure of given classes

# File lib/helpers/wallaby/base_helper.rb, line 39
def model_classes(classes = Map.model_classes)
  nested_hash = classes.each_with_object({}) do |klass, hash|
    hash[klass] = Node.new(klass)
  end
  nested_hash.each do |klass, node|
    node.parent = parent = nested_hash[klass.superclass]
    parent.children << node if parent
  end
  nested_hash.values.select { |v| v.parent.nil? }
end
model_tree(array, base_class = nil) click to toggle source

Turn the tree of classes into a nested `ul` list. @param array [Array<Wallaby::Node>] root classes @return [String] HTML for the whole tree

# File lib/helpers/wallaby/base_helper.rb, line 53
def model_tree(array, base_class = nil)
  return EMPTY_STRING if array.blank?

  options = { html_options: { class: 'dropdown-item' } }
  content_tag :ul, class: 'dropdown-menu', 'aria-labelledby': base_class do
    array.sort_by(&:name).each do |node|
      content = index_link(node.klass, options).try :<<, model_tree(node.children)
      concat content_tag(:li, content)
    end
  end
end
to_model_label(model_class) click to toggle source

@see ModelUtils.to_model_label @return [String] label for given model class

# File lib/helpers/wallaby/base_helper.rb, line 11
def to_model_label(model_class)
  ModelUtils.to_model_label model_class
end
to_resources_name(model_class) click to toggle source

@see Map.resources_name_map @return [String] resources name for given model class

# File lib/helpers/wallaby/base_helper.rb, line 17
def to_resources_name(model_class)
  Map.resources_name_map model_class
end