Class: OrderQuery::Condition
- Inherits:
-
Object
- Object
- OrderQuery::Condition
- Defined in:
- lib/order_query/condition.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#order ⇒ Object
readonly
Returns the value of attribute order.
-
#order_enum ⇒ Object
readonly
Returns the value of attribute order_enum.
-
#sql ⇒ Object
readonly
Returns the value of attribute sql.
Instance Method Summary collapse
- #complete? ⇒ Boolean
-
#filter_values(value, mode, strict = true) ⇒ Array
Valid order values before / after passed (depending on the mode).
-
#initialize(spec, scope) ⇒ Condition
constructor
A new instance of Condition.
- #inspect ⇒ Object
- #unique? ⇒ Boolean
Constructor Details
#initialize(spec, scope) ⇒ Condition
Returns a new instance of Condition.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/order_query/condition.rb', line 8 def initialize(spec, scope) spec = spec.dup = spec. @name = spec[0] case spec[1] when Array @order_enum = spec[1] @order = spec[2] || :desc else @order = spec[1] || :asc end = @unique = if .key?(:unique) !![:unique] else name.to_s == scope.primary_key end @complete = if .key?(:complete) !![:complete] else !@order_enum end @sql = SQL::Condition.new(self, scope) end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
4 5 6 |
# File 'lib/order_query/condition.rb', line 4 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
4 5 6 |
# File 'lib/order_query/condition.rb', line 4 def end |
#order ⇒ Object (readonly)
Returns the value of attribute order.
4 5 6 |
# File 'lib/order_query/condition.rb', line 4 def order @order end |
#order_enum ⇒ Object (readonly)
Returns the value of attribute order_enum.
4 5 6 |
# File 'lib/order_query/condition.rb', line 4 def order_enum @order_enum end |
#sql ⇒ Object (readonly)
Returns the value of attribute sql.
4 5 6 |
# File 'lib/order_query/condition.rb', line 4 def sql @sql end |
Instance Method Details
#complete? ⇒ Boolean
38 39 40 |
# File 'lib/order_query/condition.rb', line 38 def complete? @complete end |
#filter_values(value, mode, strict = true) ⇒ Array
Returns valid order values before / after passed (depending on the mode).
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/order_query/condition.rb', line 45 def filter_values(value, mode, strict = true) ord = order_enum pos = ord.index(value) if pos dir = order if mode == :after && dir == :desc || mode == :before && dir == :asc ord.from pos + (strict ? 1 : 0) else ord.first pos + (strict ? 0 : 1) end else # default to all if current is not in sort order values ord end end |
#inspect ⇒ Object
61 62 63 |
# File 'lib/order_query/condition.rb', line 61 def inspect "Condition(#{@name.inspect}#{" #{@order_enum.inspect}" if @order_enum} #{@order.to_s.upcase} #{'unique ' if @unique}#{@complete ? 'complete' : 'partial' if @order_enum})" end |
#unique? ⇒ Boolean
34 35 36 |
# File 'lib/order_query/condition.rb', line 34 def unique? @unique end |