class EasyBreadcrumbs::Breadcrumbs

Breadcrumbs class: Converts a URL path into Bootstrap breadcrumbs.

Constants

TEMPLATE

Attributes

breadcrumbs[R]
directories[R]
path[R]
routes[R]
view_variables[R]

Public Class Methods

new(configuration) click to toggle source
# File lib/easy_breadcrumbs/breadcrumbs.rb, line 14
def initialize(configuration)
  @view_variables = configuration.view_variables
  @routes = configuration.route_matchers
  @path = configuration.request_path

  @directories = []
  @breadcrumbs = []

  build_directories!
  build_breadcrumbs!
end

Public Instance Methods

to_html() click to toggle source
# File lib/easy_breadcrumbs/breadcrumbs.rb, line 26
def to_html
  path = File.expand_path('../../assets/' + TEMPLATE, __FILE__)
  template = File.read(path)
  eruby = Erubis::Eruby.new(template)

  eruby.result(binding)
end

Private Instance Methods

build_breadcrumbs!() click to toggle source
# File lib/easy_breadcrumbs/breadcrumbs.rb, line 54
def build_breadcrumbs!
  directories.each do |directory|
    next unless defined_route?(directory.full_path)
    @breadcrumbs << Breadcrumb.new(directories, directory)
  end
end
build_directories!() click to toggle source
# File lib/easy_breadcrumbs/breadcrumbs.rb, line 39
def build_directories!
  parsed = path.scan(%r{\/[^\/]+})

  parsed.map.with_index do |current, index|
    full_path = parsed[0..index].join
    name = current.delete('/')
    resource = fetch_variable_value(name)

    data = { full_path: full_path, name: name,
             resource: resource, index: index }

    @directories << Directory.new(data)
  end
end
defined_route?(path) click to toggle source
# File lib/easy_breadcrumbs/breadcrumbs.rb, line 61
def defined_route?(path)
  routes.any? { |route| path =~ route }
end
fetch_variable_value(resource_name) click to toggle source
# File lib/easy_breadcrumbs/breadcrumbs.rb, line 65
def fetch_variable_value(resource_name)
  symbol = singularize(resource_name).to_sym
  variable = view_variables.find { |var| var[:name] == symbol }

  variable[:value] if variable
end