Class: LcpRuby::Metadata::MenuDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/lcp_ruby/metadata/menu_definition.rb

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

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 = top_menu
  @sidebar_menu = sidebar_menu
  @raw_hash = raw_hash
  # ResponsivePolicy.new(nil) synthesizes framework defaults so
  # consumers never branch on presence.
  @responsive = ResponsivePolicy.new(responsive)

  validate!
  log_auto_inject_sidebar_toggle
end

Class Attribute Details

.auto_inject_loggedObject

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_hashObject (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

#responsiveObject (readonly)

Returns the value of attribute responsive.



4
5
6
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 4

def responsive
  @responsive
end

Returns the value of attribute sidebar_menu.



4
5
6
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 4

def sidebar_menu
  @sidebar_menu
end

#top_menuObject (readonly)

Returns the value of attribute top_menu.



4
5
6
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 4

def top_menu
  @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) }
  sidebar = data["sidebar_menu"]&.map { |item| MenuItem.from_hash(item) }

  new(top_menu: top, sidebar_menu: sidebar, raw_hash: data,
      responsive: data["responsive"])
end

Instance Method Details

#both?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 53

def both?
  has_top_menu? && has_sidebar_menu?
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

Returns:

  • (Boolean)


41
42
43
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 41

def has_sidebar_menu?
  !sidebar_menu.nil?
end

#has_top_menu?Boolean

Returns:

  • (Boolean)


37
38
39
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 37

def has_top_menu?
  !top_menu.nil?
end

#layout_modeObject

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_only?
    "sidebar"
  else
    "top"
  end
end

Returns:

  • (Boolean)


49
50
51
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 49

def sidebar_only?
  !has_top_menu? && has_sidebar_menu?
end

#top_only?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/lcp_ruby/metadata/menu_definition.rb', line 45

def top_only?
  has_top_menu? && !has_sidebar_menu?
end