class TablePal::Validate

Attributes

meth[R]

Public Class Methods

new(meth, options) click to toggle source
# File lib/validate.rb, line 6
def initialize(meth, options)
  @meth = meth

  options.each do |key, value|
    validate_option(key, value)
  end
end

Public Instance Methods

class_method() click to toggle source
# File lib/validate.rb, line 39
def class_method
  "Table.#{meth}"
end
for_sentence(classes) click to toggle source
# File lib/validate.rb, line 43
def for_sentence(classes)
  classes.map { |klass| "`#{klass}`" }.join(' or ')
end
validate(key:, value:, classes:) click to toggle source
# File lib/validate.rb, line 33
def validate(key:, value:, classes:)
  return if classes.any? { |klass| value.is_a?(klass) }

  raise TablePalError, "#{class_method} expected `#{key}:` to be a #{for_sentence(classes)}, not a `#{value.class}`"
end
validate_option(key, value) click to toggle source
# File lib/validate.rb, line 14
def validate_option(key, value)
  case key
  when :colour        then validate(key: key, value: value, classes: [Symbol, NilClass])
  when :column        then validate(key: key, value: value, classes: [Column])
  when :content       then validate(key: key, value: value, classes: [String, Float, Integer, NilClass])
  when :formatter     then validate(key: key, value: value, classes: [Proc])
  when :heading       then validate(key: key, value: value, classes: [TrueClass])
  when :justification then validate(key: key, value: value, classes: [Symbol])
  when :left_border   then validate(key: key, value: value, classes: [String, NilClass])
  when :left_padding  then validate(key: key, value: value, classes: [String])
  when :right_border  then validate(key: key, value: value, classes: [String, NilClass])
  when :right_padding then validate(key: key, value: value, classes: [String])
  when :row           then validate(key: key, value: value, classes: [Row])
  when :subheading    then validate(key: key, value: value, classes: [TrueClass, FalseClass])
  when :section_end   then validate(key: key, value: value, classes: [TrueClass, FalseClass])
  else raise TablePalError, "#{class_method} received Unexpected option: `#{key}`"
  end
end