Sha256: b7051f75c7ddb9298a06f1932f4a91db70e22edb4259b655d5653966f99349a2
Contents?: true
Size: 1.16 KB
Versions: 9
Compression:
Stored size: 1.16 KB
Contents
module Decanter module Parser module Core def self.included(base) base.extend(ClassMethods) end module ClassMethods # Check if allowed, parse if not def parse(name, values, options={}) case when empty_values?(values) { name => nil } when allowed?(values) { name => values } else _parse(name, values, options) end end # Define parser def parser(&block) @parser = block end # Set allowed classes def allow(*args) @allowed = args end # Set preparsers def pre(*parsers) @pre = parsers end # Get prepareer def preparsers @pre || [] end # Check for allowed classes def allowed?(values) @allowed && Array.wrap(values).all? do |value| @allowed.any? { |allowed| value.is_a? allowed } end end def empty_values?(values) return true if Array.wrap(values).all? { |value| value.nil? || value == "" } end end end end end
Version data entries
9 entries across 9 versions & 1 rubygems