Module: LuckyParam

Defined in:
lib/lucky_param.rb,
lib/lucky_param/checker.rb,
lib/lucky_param/version.rb

Overview

An easy and extendable controller validator helper for Rails.

Defined Under Namespace

Classes: ParamFormatError, ParamMissError, UnknownCheckerError

Constant Summary collapse

CHECKER =
{
  NONE: [
    ->(params, column) { true }
  ],
  String: [
    ->(params, column) { params[column].is_a?(String) },
    "must be valid String"
  ],
  Boolean: [
    ->(params, column) { %w[true false 1 0].include?(params[column].to_s) },
    "must be one of [true false 1 0]"
  ],
  Integer: [
    ->(params, column) { params[column].to_s =~ /\A(0|[1-9]\d*)\Z$/ },
    "must be valid Integer"
  ],
  Float: [
    ->(params, column) { params[column].to_s =~ /\A^[-+]?[0-9]+([,.][0-9]+)?\Z$/ },
    "must be valid Float"
  ],
  Number: [
    lambda do |params, column|
      begin
        Float(params[column])
      rescue StandardError
        false
      end
    end
  ],
  Email: [
    ->(params, column) { params[column].to_s =~ /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/ },
    "must be valid Email"
  ],
  Timestamp: [
    ->(params, column) { params[column].to_s =~ /^(\+|\-)?\d+$/ },
    "must be valid Timestamp"
  ],
  ArrayJSON: [
    lambda do |params, column|
      begin
        params[column] = JSON.parse(params[column]) if params[column].is_a?(String)
        params[column].is_a?(Array)
      rescue StandardError
        false
      end
    end,
    "must be valid Array JSON"
  ],
  HashJSON: [
    lambda do |params, column|
      begin
        params[column] = JSON.parse(params[column]) if params[column].is_a?(String)
        params[column].respond_to?(:to_hash)
      rescue StandardError
        false
      end
    end,
    "must be valid Hash JSON"
  ]
}.freeze
VERSION =
"1.0.0"

Instance Method Summary collapse

Instance Method Details

#optional(column, checker_type) ⇒ Object



20
21
22
23
24
# File 'lib/lucky_param.rb', line 20

def optional(column, checker_type)
  return if params[column].blank?

  check_param_format(column, checker_type)
end

#required(column, checker_type) ⇒ Object

Raises:



14
15
16
17
18
# File 'lib/lucky_param.rb', line 14

def required(column, checker_type)
  raise ParamMissError.new("Missing Params: #{column}") if params[column].blank?

  check_param_format(column, checker_type)
end