Module: L43Peg::Box

Defined in:
lib/l43_peg/box.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#valueObject (readonly)

Returns the value of attribute value.



6
7
8
# File 'lib/l43_peg/box.rb', line 6

def value
  @value
end

Class Method Details

.make(class_name) ⇒ Object



9
10
11
12
13
14
15
16
17
18
# File 'lib/l43_peg/box.rb', line 9

def make(class_name)
  case class_name
  when String, Symbol
    make_new(class_name)
  when Class
    class_name
  else
    raise ArgumentError, "need a string, symbol or class, got: #{class_name.inspect}"
  end
end

.make_new(class_name) ⇒ Object

Raises:



20
21
22
23
24
25
# File 'lib/l43_peg/box.rb', line 20

def make_new(class_name)
  klass = Object.const_get(class_name) if Object.const_defined?(class_name)
  raise NotABox, "#{class_name} is already defined but not a Box!" if klass && !(klass < self)
  klass = Object.const_set(class_name, Class.new.include(self)) unless klass
  klass
end

Instance Method Details

#deconstruct_keysObject



28
# File 'lib/l43_peg/box.rb', line 28

def deconstruct_keys(*) = {class: self, value:}