Sha256: 2b208af7919988992328ac6b7ffc2d84d14ad9070c4e4b8c4c9133fcd2223e19
Contents?: true
Size: 1.84 KB
Versions: 7
Compression:
Stored size: 1.84 KB
Contents
# frozen-string-literal: true require 'uri' require 'phony' module PUNK module Plugins module Validation module InstanceMethods def validates_url(atts, opts={}) default = { message: "is not a URL" } validatable_attributes(atts, default.merge(opts)) do |_name, value, message| message unless URI::DEFAULT_PARSER.make_regexp.match(value).to_a.compact.length > 2 end end def validates_email(atts, opts={}) default = { message: "is not an email address" } validatable_attributes(atts, default.merge(opts)) do |_name, value, message| message unless URI::MailTo::EMAIL_REGEXP.match(value) end end def validates_phone(atts, opts={}) default = { message: "is not a phone number" } validatable_attributes(atts, default.merge(opts)) do |_name, value, message| message unless Phony.plausible?(value) end end def validates_parse_id(atts, opts={}) default = { message: "is not a Parse ID" } validatable_attributes(atts, default.merge(opts)) do |_name, value, message| message unless /^[[:alnum:]]{10}$/.match(value) end end def validates_subdomain(atts, opts={}) default = { message: "is not a subdomain" } validatable_attributes(atts, default.merge(opts)) do |_name, value, message| message unless /^[A-Za-z0-9](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?$/.match(value) end end def validates_state(name, state) errors.add(name, "is not in #{state} state") unless self[name].send("#{state}?") end def validates_event(name, event) errors.add(name, "may not #{event}") unless self[name].send("may_#{event}?") end end end end end
Version data entries
7 entries across 7 versions & 1 rubygems