lib/compel/builder/string.rb
module Compel
module Builder
class String < Schema
# Taken from ruby_regex gem by @eparreno
# https://github.com/eparreno/ruby_regex
URL_REGEX = /(\A\z)|(\A(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?\z)/ix
# Taken from Michael Hartl's 'The Ruby on Rails Tutorial'
# https://www.railstutorial.org/book
EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
include CommonValue
def initialize
super(Coercion::String)
end
def format(regex, options = {})
build_option :format, Coercion.coerce!(regex, Coercion::Regexp), options
end
def url(options = {})
build_option :format, URL_REGEX, options
end
def email(options = {})
build_option :format, EMAIL_REGEX, options
end
end
end
end