Sha256: ba0e0d47b0999ea5efc7d28eef193b495ed1372b97ef13b112cc967892a130fc
Contents?: true
Size: 1.38 KB
Versions: 2
Compression:
Stored size: 1.38 KB
Contents
# frozen_string_literal: true module Vedeu module Repositories # Some classes expect a certain set of attributes when # initialized, this module uses the #defaults method of the class # to provide missing attribute keys (and values). # # @api private # module Defaults include Vedeu::Common # Returns a new instance of the class including this module. # # @note # If a particular key is missing from the attributes # parameter, then it is added with the respective value from # #defaults. # # @param attributes [Hash] # @return [void] A new instance of the class including this # module. def initialize(attributes = {}) defaults.merge!(validate(attributes)).each do |key, value| instance_variable_set("@#{key}", value || defaults.fetch(key)) end end private # @return [Hash<void>] def defaults {} end # @param attributes [Hash] # @raise [Vedeu::Error::InvalidSyntax] When the :attributes # param is not a Hash. # @return [Hash] def validate(attributes) fail Vedeu::Error::InvalidSyntax, 'Argument :attributes is not a Hash.' unless hash?(attributes) attributes.keep_if { |key, _| defaults.key?(key) } end end # Defaults end # Repositories end # Vedeu
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
vedeu-0.8.5 | lib/vedeu/repositories/defaults.rb |
vedeu-0.8.4 | lib/vedeu/repositories/defaults.rb |