Class: Menuable::MenuContext

Inherits:
Object
  • Object
show all
Defined in:
lib/menuable.rb

Overview

A class for binding with view_content to convert the settings defined in yaml into something that can actually be used

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(menus:, context:) ⇒ MenuContext

Returns a new instance of MenuContext.



68
69
70
71
# File 'lib/menuable.rb', line 68

def initialize(menus:, context:)
  @menus = menus
  @context = context
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



66
67
68
# File 'lib/menuable.rb', line 66

def context
  @context
end

Instance Method Details

#eachObject

rubocop:todo Metrics/MethodLength



73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/menuable.rb', line 73

def each # rubocop:todo Metrics/MethodLength
  return enum_for(:each) unless block_given?

  @menus.each do |config|
    case config
    in divider:
      yield config
    in items:
      yield menu({ **config, items: items.filter_map { |item| menu(item) } })
    else
      menu(config).try { yield _1 }
    end
  end
end