Sha256: f695519ccc2f6b7603fb5e91aae76c8d204d619a29249ecc59f410de0541be57

Contents?: true

Size: 1.09 KB

Versions: 1

Compression:

Stored size: 1.09 KB

Contents

module Gretel
  class Crumb
    # Initializes a new crumb from the given +key+.
    # It finds the breadcrumb created in +Gretel::Crumbs.layout+ and renders the block using the arguments supplied in +args+.
    def initialize(key, *args)
      block = Gretel::Crumbs.crumbs[key]
      raise ArgumentError, "Breadcrumb :#{key} not found." unless block
      @key = key
      instance_exec *args, &block
    end

    # Sets link of the breadcrumb.
    def link(text, url)
      links << Gretel::Link.new(key, text, url)
    end

    # Holds all of the breadcrumb's links as a breadcrumb can have multiple links.
    def links
      @links ||= []
    end

    # Sets or gets the parent breadcrumb.
    # If you supply a parent key and optional arguments, it will set the parent.
    # If nothing is supplied, it will return the parent, if this has been set.
    #
    # Example:
    #   parent :category, category
    def parent(*args)
      return @parent unless args.any?
      key = args.shift
      
      @parent ||= Gretel::Crumb.new(key, *args)
    end

    # Key of the breadcrumb.
    attr_reader :key
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
gretel-2.0.0.beta1 lib/gretel/crumb.rb