Class: Datagrid::Drivers::Array
  
  
  
Overview
  
  Constant Summary
  
  
  Datagrid::Drivers::AbstractDriver::TIMESTAMP_CLASSES
  
    
      Class Method Summary
      collapse
    
    
  
    
      Instance Method Summary
      collapse
    
    
      
        - 
  
    
      #asc(scope, order)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #batch_each(scope, batch_size, &block)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #can_preload?(scope, association)  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #column_names(scope)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #contains(scope, field, value)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #default_cache_key(asset)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #default_order(scope, column_name)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #desc(scope, order)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #greater_equal(scope, field, value)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #has_column?(scope, column_name)  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #is_timestamp?(scope, column_name)  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #less_equal(scope, field, value)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #reverse_order(scope)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #to_scope(scope)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
  
- 
  
    
      #where(scope, attribute, value)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
  
#append_column_queries, #default_preload, guess_driver, inherited, #match?, #normalized_column_type, #where_by_timestamp_gotcha
  
    Class Method Details
    
      
  
  
    .match?(scope)  ⇒ Boolean 
  
  
  
  
    | 
5
6
7 | # File 'lib/datagrid/drivers/array.rb', line 5
def self.match?(scope)
  !Datagrid::Drivers::ActiveRecord.match?(scope) && (scope.is_a?(::Array) || scope.is_a?(Enumerator))
end | 
 
    
   
  
    Instance Method Details
    
      
  
  
    #asc(scope, order)  ⇒ Object 
  
  
  
  
    | 
19
20
21
22
23
24
25 | # File 'lib/datagrid/drivers/array.rb', line 19
def asc(scope, order)
  return scope unless order
  return scope if order.empty?
  scope.sort_by do |object|
    object.send(order)
  end
end | 
 
    
      
  
  
    #batch_each(scope, batch_size, &block)  ⇒ Object 
  
  
  
  
    | 
72
73
74 | # File 'lib/datagrid/drivers/array.rb', line 72
def batch_each(scope, batch_size, &block)
  scope.each(&block)
end | 
 
    
      
  
  
    #can_preload?(scope, association)  ⇒ Boolean 
  
  
  
  
    | 
80
81
82 | # File 'lib/datagrid/drivers/array.rb', line 80
def can_preload?(scope, association)
  false
end | 
 
    
      
  
  
    #column_names(scope)  ⇒ Object 
  
  
  
  
    | 
68
69
70 | # File 'lib/datagrid/drivers/array.rb', line 68
def column_names(scope)
  []
end | 
 
    
      
  
  
    #contains(scope, field, value)  ⇒ Object 
  
  
  
  
    | 
62
63
64
65
66 | # File 'lib/datagrid/drivers/array.rb', line 62
def contains(scope, field, value)
  scope.select do |object|
    object.send(field).to_s.include?(value)
  end
end | 
 
    
      
  
  
    #default_cache_key(asset)  ⇒ Object 
  
  
  
  
    | 
76
77
78 | # File 'lib/datagrid/drivers/array.rb', line 76
def default_cache_key(asset)
  asset
end | 
 
    
      
  
  
    #default_order(scope, column_name)  ⇒ Object 
  
  
  
  
    | 
31
32
33 | # File 'lib/datagrid/drivers/array.rb', line 31
def default_order(scope, column_name)
  column_name
end | 
 
    
      
  
  
    #desc(scope, order)  ⇒ Object 
  
  
  
  
    | 
27
28
29 | # File 'lib/datagrid/drivers/array.rb', line 27
def desc(scope, order)
  asc(scope, order).reverse
end | 
 
    
      
  
  
    #greater_equal(scope, field, value)  ⇒ Object 
  
  
  
  
    | 
39
40
41
42
43
44 | # File 'lib/datagrid/drivers/array.rb', line 39
def greater_equal(scope, field, value)
  scope.select do |object|
    compare_value = object.send(field)
    compare_value.respond_to?(:>=) && compare_value >= value
  end
end | 
 
    
      
  
  
    #has_column?(scope, column_name)  ⇒ Boolean 
  
  
  
  
    | 
53
54
55 | # File 'lib/datagrid/drivers/array.rb', line 53
def has_column?(scope, column_name)
  scope.any? && scope.first.respond_to?(column_name)
end | 
 
    
      
  
  
    #is_timestamp?(scope, column_name)  ⇒ Boolean 
  
  
  
  
    | 
57
58
59
60 | # File 'lib/datagrid/drivers/array.rb', line 57
def is_timestamp?(scope, column_name)
  has_column?(scope, column_name) &&
    timestamp_class?(scope.first.send(column_name).class)
end | 
 
    
      
  
  
    #less_equal(scope, field, value)  ⇒ Object 
  
  
  
  
    | 
46
47
48
49
50
51 | # File 'lib/datagrid/drivers/array.rb', line 46
def less_equal(scope, field, value)
  scope.select do |object|
    compare_value = object.send(field)
    compare_value.respond_to?(:<=) && compare_value <= value
  end
end | 
 
    
      
  
  
    #reverse_order(scope)  ⇒ Object 
  
  
  
  
    | 
35
36
37 | # File 'lib/datagrid/drivers/array.rb', line 35
def reverse_order(scope)
  scope.reverse
end | 
 
    
      
  
  
    #to_scope(scope)  ⇒ Object 
  
  
  
  
    | 
9
10
11 | # File 'lib/datagrid/drivers/array.rb', line 9
def to_scope(scope)
  scope
end | 
 
    
      
  
  
    #where(scope, attribute, value)  ⇒ Object 
  
  
  
  
    | 
13
14
15
16
17 | # File 'lib/datagrid/drivers/array.rb', line 13
def where(scope, attribute, value)
  scope.select do |object|
    object.send(attribute) == value
  end
end |