Sha256: 98573d318ae0e2d0b897e91638c909257ca717d2e1c7d465496ee406c8c53dd3
Contents?: true
Size: 920 Bytes
Versions: 1
Compression:
Stored size: 920 Bytes
Contents
require 'ostruct' module Resulang class Section < OpenStruct attr_reader :_section_name include Rendering def initialize(name:, data:) super(_section_name: name) interpret_object(self, data) end def get_binding binding end private 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 private def interpret_object(struct, value) struct.tap do |s| value.each do |key, value| s[key] = interpret(value) end end end private def interpret_range(value) if value.respond_to?(:keys) && value.keys == ['range'] (value['range'].first..value['range'].last) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
resulang-3.0.0 | lib/resulang/section.rb |