Class: LcpRuby::Metadata::MenuDefinition
- Inherits:
-
Object
- Object
- LcpRuby::Metadata::MenuDefinition
- Defined in:
- lib/lcp_ruby/metadata/menu_definition.rb
Class Attribute Summary collapse
-
.auto_inject_logged ⇒ Object
Returns the value of attribute auto_inject_logged.
Instance Attribute Summary collapse
-
#raw_hash ⇒ Object
readonly
Returns the value of attribute raw_hash.
-
#responsive ⇒ Object
readonly
Returns the value of attribute responsive.
-
#sidebar_menu ⇒ Object
readonly
Returns the value of attribute sidebar_menu.
-
#top_menu ⇒ Object
readonly
Returns the value of attribute top_menu.
Class Method Summary collapse
Instance Method Summary collapse
- #both? ⇒ Boolean
-
#each_entry(&block) ⇒ Object
i18n_check Phase 3a façade — yields each linted literal on every menu entry as ‘{ kind:, value:, source: }`.
- #has_sidebar_menu? ⇒ Boolean
- #has_top_menu? ⇒ Boolean
-
#initialize(top_menu: nil, sidebar_menu: nil, raw_hash: nil, responsive: nil) ⇒ MenuDefinition
constructor
A new instance of MenuDefinition.
-
#layout_mode ⇒ Object
Returns the layout mode string for template selection.
- #sidebar_only? ⇒ Boolean
- #top_only? ⇒ Boolean
Constructor Details
#initialize(top_menu: nil, sidebar_menu: nil, raw_hash: nil, responsive: nil) ⇒ MenuDefinition
Returns a new instance of MenuDefinition.
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 15 def initialize(top_menu: nil, sidebar_menu: nil, raw_hash: nil, responsive: nil) @top_menu = @sidebar_menu = @raw_hash = raw_hash # ResponsivePolicy.new(nil) synthesizes framework defaults so # consumers never branch on presence. @responsive = ResponsivePolicy.new(responsive) validate! end |
Class Attribute Details
.auto_inject_logged ⇒ Object
Returns the value of attribute auto_inject_logged.
12 13 14 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 12 def auto_inject_logged @auto_inject_logged end |
Instance Attribute Details
#raw_hash ⇒ Object (readonly)
Returns the value of attribute raw_hash.
4 5 6 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 4 def raw_hash @raw_hash end |
#responsive ⇒ Object (readonly)
Returns the value of attribute responsive.
4 5 6 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 4 def responsive @responsive end |
#sidebar_menu ⇒ Object (readonly)
Returns the value of attribute sidebar_menu.
4 5 6 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 4 def @sidebar_menu end |
#top_menu ⇒ Object (readonly)
Returns the value of attribute top_menu.
4 5 6 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 4 def @top_menu end |
Class Method Details
.from_hash(hash) ⇒ Object
27 28 29 30 31 32 33 34 35 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 27 def self.from_hash(hash) data = hash["menu"] || hash top = data["top_menu"]&.map { |item| MenuItem.from_hash(item) } = data["sidebar_menu"]&.map { |item| MenuItem.from_hash(item) } new(top_menu: top, sidebar_menu: , raw_hash: data, responsive: data["responsive"]) end |
Instance Method Details
#both? ⇒ Boolean
53 54 55 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 53 def both? && end |
#each_entry(&block) ⇒ Object
i18n_check Phase 3a façade — yields each linted literal on every menu entry as ‘{ kind:, value:, source: }`. Recurses into `children:`. Source is nil for YAML-loaded menus, which is every menu today (no DSL builder exists); the walker fills in the file-level source via `fallback_source`.
73 74 75 76 77 78 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 73 def each_entry(&block) return enum_for(:each_entry) unless block_given? ((@top_menu || []) + (@sidebar_menu || [])).each do |item| walk_item(item, &block) end end |
#has_sidebar_menu? ⇒ Boolean
41 42 43 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 41 def !.nil? end |
#has_top_menu? ⇒ Boolean
37 38 39 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 37 def !.nil? end |
#layout_mode ⇒ Object
Returns the layout mode string for template selection
58 59 60 61 62 63 64 65 66 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 58 def layout_mode if both? "both" elsif "sidebar" else "top" end end |
#sidebar_only? ⇒ Boolean
49 50 51 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 49 def ! && end |
#top_only? ⇒ Boolean
45 46 47 |
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 45 def top_only? && ! end |