class Structured::Dictionary
Attributes
member_klass[R]
Private Class Methods
[](member_klass)
click to toggle source
# File lib/structured/dictionary.rb, line 11 def self.[](member_klass) new(member_klass) end
new(member_klass)
click to toggle source
# File lib/structured/dictionary.rb, line 7 def initialize(member_klass) @member_klass = member_klass end
Private Instance Methods
default_value()
click to toggle source
# File lib/structured/dictionary.rb, line 43 def default_value {}.freeze end
format_stack_frame_element(key)
click to toggle source
# File lib/structured/dictionary.rb, line 39 def format_stack_frame_element(key) "[#{key}]" end
parse(parsed_yaml, stack:, context: nil)
click to toggle source
# File lib/structured/dictionary.rb, line 15 def parse(parsed_yaml, stack:, context: nil) unless parsed_yaml.is_a?(Hash) raise Structured::Errors::InvalidValue.new(stack, "#{stack} expects a hash, but found #{parsed_yaml.class.name}") end result = {} errors = [] parsed_yaml.each do |key, value| begin unless key.is_a?(::String) raise Structured::Errors::InvalidValue.new(stack, "Dictionary key #{key.inspect} is not a string") end result[key] = member_klass.parse(value, stack: stack.push(key, member_klass), context: context) rescue Structured::Errors::Base => exception errors << exception end end raise Structured::Errors::MultipleErrors.union(stack, errors) unless errors.empty? result end
type_name()
click to toggle source
# File lib/structured/dictionary.rb, line 47 def type_name "Dictionary[#{member_klass.type_name}]" end