class ShafClient::Field

Attributes

hidden[R]
name[R]
prompt[R]
read_only[R]
regex[R]
required[R]
templated[R]
type[R]
value[R]

Public Class Methods

new( name:, prompt: nil, title: nil, required: false, read_only: false, hidden: false, templated: false, type: nil, value: nil, regex: nil ) click to toggle source
# File lib/shaf_client/field.rb, line 8
def initialize(
  name:,
  prompt: nil,
  title: nil,
  required: false,
  read_only: false,
  hidden: false,
  templated: false,
  type: nil,
  value: nil,
  regex: nil
)
  @name = name.to_sym
  @prompt = prompt || title || name
  @required = required
  @read_only = read_only
  @hidden = hidden
  @templated = templated
  @type = type&.downcase
  @value = value
  @regex = parse_regexp(regex)
end

Public Instance Methods

valid?(value) click to toggle source
# File lib/shaf_client/field.rb, line 31
def valid?(value)
  return false unless validate_required(value)
  return false unless validate_number(value)
  return false unless validate_string(value)
  return false unless validate_regexp(value)
  true
end

Private Instance Methods

parse_regexp(str) click to toggle source
# File lib/shaf_client/field.rb, line 68
def parse_regexp(str)
  return if String(str).empty?
  Regexp.new(str)
rescue RegexpError
  nil
end
validate_number(value) click to toggle source
# File lib/shaf_client/field.rb, line 47
def validate_number(value)
  return true if value.nil?
  return true unless type
  return true unless %w[int integer number].include? type
  value.is_a? Numeric
end
validate_regexp(value) click to toggle source
# File lib/shaf_client/field.rb, line 61
def validate_regexp(value)
  str = String(value)
  return true if str.empty?
  return true unless regex
  str.match? regex
end
validate_required(value) click to toggle source
# File lib/shaf_client/field.rb, line 41
def validate_required(value)
  return true unless required
  return false if String(value).empty?
  true
end
validate_string(value) click to toggle source
# File lib/shaf_client/field.rb, line 54
def validate_string(value)
  return true if value.nil?
  return true unless type
  return true unless %w[string text].include? type
  value.is_a? String
end