class Resulang::Section

Attributes

_section_name[R]

Public Class Methods

new(name:, data:) click to toggle source
Calls superclass method
# File lib/resulang/section.rb, line 9
def initialize(name:, data:)
  super(_section_name: name)
  interpret_object(self, data)
end

Public Instance Methods

get_binding() click to toggle source
# File lib/resulang/section.rb, line 14
def get_binding
  binding
end

Private Instance Methods

interpret(value) click to toggle source
# File lib/resulang/section.rb, line 18
        def interpret(value) 
  if (range = interpret_range(value))
    range
  elsif value.respond_to?(:keys)
    interpret_object(OpenStruct.new, value)
  elsif value.respond_to?(:map)
    value.map { |v| interpret(v) }
  else
    value
  end
end
interpret_object(struct, value) click to toggle source
# File lib/resulang/section.rb, line 30
        def interpret_object(struct, value)
  struct.tap do |s|
    value.each do |key, value|
      s[key] = interpret(value)
    end
  end
end
interpret_range(value) click to toggle source
# File lib/resulang/section.rb, line 38
        def interpret_range(value)
  if value.respond_to?(:keys) && value.keys == ['range']
    (value['range'].first..value['range'].last)
  end
end