rakuten-ws/rws-ruby-sdk

View on GitHub
lib/rakuten_web_service/travel/open_struct.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
module RakutenWebService
  module Travel
    class OpenStruct
      using RakutenWebService::StringSupport

      def initialize(hash)
        @table = {}
        hash.each do |(key, val)|
          val = self.class.new(val) if val.is_a?(Hash)
          val = val.map { |v| self.class.new(v) } if val.is_a?(Array)
          name = key.to_sym
          @table[name] = val
          define_singleton_method(name) { @table[name] }
          define_singleton_method(name.to_s.to_snake) { @table[name] }
        end
      end
    end
  end
end