Sha256: 06f259d60bc31c22e917821ace6951592383df1daec2abdfc3436338865a9368
Contents?: true
Size: 929 Bytes
Versions: 1
Compression:
Stored size: 929 Bytes
Contents
require 'dry-struct' require 'dry-types' module Nova module API module Utils class BaseStruct < Dry::Struct DATE_REGEX = /\A\d{4}-\d{2}-\d{2}\z/ transform_keys(&:to_sym) def allowed_attributes return attributes unless self.class.const_defined?('ALLOWED_ATTRIBUTES') data = {} self.class.const_get('ALLOWED_ATTRIBUTES').each do |key| next unless attributes.keys.include? key value = attributes[key] if value.is_a? Array data[key.to_sym] = value.map { |attribute| permit_value(key, attribute) } else data[key.to_sym] = permit_value(key, value) end end data end private def permit_value(key, value) value.respond_to?(:allowed_attributes) ? value.allowed_attributes : value end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
nova-api-0.5.0 | lib/nova/api/utils/base_struct.rb |