Sha256: a6e3c07c31bb10077ead63302f77bcec7ff4e787b6d1456799a7d21e6cabebeb
Contents?: true
Size: 1.05 KB
Versions: 2
Compression:
Stored size: 1.05 KB
Contents
module ReportsKits class Order attr_accessor :relation, :field, :direction VALID_RELATIONS = %w(count dimension1 dimension2) VALID_FIELDS = [nil, 'label'] VALID_DIRECTIONS = %w(asc desc) def initialize(relation, field, direction) self.relation = relation self.field = field self.direction = direction end 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 end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
reports_kits-0.7.8 | lib/reports_kits/order.rb |
reports_kits-0.7.7 | lib/reports_kits/order.rb |