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.



939
940
941
942
943
# File 'lib/mxrb/dsl/builder.rb', line 939

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

Instance Method Details

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



951
952
953
# File 'lib/mxrb/dsl/builder.rb', line 951

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

#deep_structure(value) ⇒ Object

Raises:

  • (ArgumentError)


945
946
947
948
949
# File 'lib/mxrb/dsl/builder.rb', line 945

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



955
956
957
958
959
# File 'lib/mxrb/dsl/builder.rb', line 955

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



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

def items = @items

#to_hObject



963
964
965
# File 'lib/mxrb/dsl/builder.rb', line 963

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