Sha256: 5a2edb8b900f354e3ed64478b6dad781284b44f0ec3586360c44a3cd2cdc0225

Contents?: true

Size: 1.09 KB

Versions: 21

Compression:

Stored size: 1.09 KB

Contents

require 'time'
module Rack::App::Utils::Parser
  extend(self)

  require 'rack/app/utils/parser/custom'
  require 'rack/app/utils/parser/string'
  require 'rack/app/utils/parser/boolean'
  require 'rack/app/utils/parser/float'
  require 'rack/app/utils/parser/integer'
  require 'rack/app/utils/parser/numeric'

  def parse(type, str)
    string = str.to_s
    parser = get_parser(type)
    return unless parser.validate(string)
    parser.parse(string)
  end

  protected

  def get_parser(type)
    case true
    when [::String, :string].include?(type)
      self::String.new
    when [::TrueClass, ::FalseClass, :boolean].include?(type)
      self::Boolean.new
    when type == :date
      self::Custom.new(::Date)
    when type == :time
      self::Custom.new(::Time)
    when [:date_time, :datetime].include?(type)
      self::Custom.new(::DateTime)
    when [::Integer, :integer].include?(type)
      self::Integer.new
    when [::Float, :float].include?(type)
      self::Float.new
    when [::Numeric, :numeric].include?(type)
      self::Numeric.new
    else
      self::Custom.new(type)
    end
  end
end

Version data entries

21 entries across 21 versions & 2 rubygems

Version Path
rack-app-7.3.2 lib/rack/app/utils/parser.rb