Sha256: 0190896620c14d69a0470372e7d3e1b6d9b119933be13b9cb7b5c6db6e33fc09
Contents?: true
Size: 1.58 KB
Versions: 1
Compression:
Stored size: 1.58 KB
Contents
require 'yaml' require 'pathname' module Dry module Validation class Messages DEFAULT_PATH = Pathname(__dir__).join('../../../config/errors.yml').freeze attr_reader :data def self.default load(DEFAULT_PATH) end def self.load(path) new(load_yaml(path)) end def self.load_yaml(path) symbolize_keys(YAML.load_file(path)) end def self.symbolize_keys(hash) hash.each_with_object({}) do |(k, v), r| r[k.to_sym] = v.is_a?(Hash) ? symbolize_keys(v) : v end end class Namespaced attr_reader :namespace, :fallback def initialize(namespace, fallback) @namespace = namespace @fallback = fallback end def lookup(*args) namespace.lookup(*args) { fallback.lookup(*args) } end end def initialize(data) @data = data end def merge(overrides) if overrides.is_a?(Hash) self.class.new(data.merge(overrides)) else self.class.new(data.merge(Messages.load_yaml(overrides))) end end def namespaced(namespace) Namespaced.new(Messages.new(data[namespace]), self) end def lookup(identifier, key, arg, &block) message = data.fetch(:attributes, {}).fetch(key, {}).fetch(identifier) do data.fetch(identifier, &block) end if message.is_a?(Hash) message.fetch(arg.class.name.downcase.to_sym, message.fetch(:default)) else message end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dry-validation-0.1.0 | lib/dry/validation/messages.rb |