class ReportsKits::Order

Constants

VALID_DIRECTIONS
VALID_FIELDS
VALID_RELATIONS

Attributes

direction[RW]
field[RW]
relation[RW]

Public Class Methods

new(relation, field, direction) click to toggle source
# File lib/reports_kits/order.rb, line 9
def initialize(relation, field, direction)
  self.relation = relation
  self.field = field
  self.direction = direction
end
parse(string) click to toggle source
# File lib/reports_kits/order.rb, line 15
def self.parse(string)
  string ||= ''
  field_expression, direction = string.to_s.split(/\s+/)
  relation, field = (field_expression || '').split('.')

  relation = relation.presence
  field = field.presence
  direction = direction.presence || 'asc'

  relation = relation.to_i if relation =~ /^\d+$/

  raise ArgumentError.new("Invalid relation: #{relation}") unless VALID_RELATIONS.include?(relation) || relation.is_a?(Fixnum)
  raise ArgumentError.new("Invalid field: #{field}") unless VALID_FIELDS.include?(field)
  raise ArgumentError.new("Invalid direction: #{direction}") unless VALID_DIRECTIONS.include?(direction)

  new(relation, field, direction)
end