Class: Mxrb::Dsl::MenuBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/mxrb/dsl/builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ MenuBuilder

Returns a new instance of MenuBuilder.



1057
1058
1059
1060
1061
# File 'lib/mxrb/dsl/builder.rb', line 1057

def initialize(name)
  @name  = name.to_s
  @items = []
  @deep_structure = nil
end

Instance Method Details

#bson_binary(base64, subtype: :generic) ⇒ Object



1069
1070
1071
# File 'lib/mxrb/dsl/builder.rb', line 1069

def bson_binary(base64, subtype: :generic)
  BSON::Binary.new(Base64.strict_decode64(base64), subtype.to_sym)
end

#deep_structure(value) ⇒ Object

Raises:

  • (ArgumentError)


1063
1064
1065
1066
1067
# File 'lib/mxrb/dsl/builder.rb', line 1063

def deep_structure(value)
  raise ArgumentError, "deep_structure requires a Hash" unless value.is_a?(Hash)

  @deep_structure = value
end

#item(caption, page: nil, &block) ⇒ Object



1073
1074
1075
1076
1077
# File 'lib/mxrb/dsl/builder.rb', line 1073

def item(caption, page: nil, &block)
  child = self.class.new(caption)
  child.instance_eval(&block) if block
  @items << { caption: caption.to_s, page: page&.to_s, items: child.items }.compact
end

#itemsObject



1079
# File 'lib/mxrb/dsl/builder.rb', line 1079

def items = @items

#to_hObject



1081
1082
1083
# File 'lib/mxrb/dsl/builder.rb', line 1081

def to_h
  { name: @name, items: @items, deep_structure: @deep_structure }
end