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