eel 1.0.0.pre → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,12 +4,12 @@ module Eel
4
4
 
5
5
  def order *args
6
6
  return self if args.blank?
7
- super *args.flatten.map { |a| assign_context(a.expr) if a.respond_to?(:expr); a }
7
+ super *args.flatten.map { |a| assign_context(a); a }
8
8
  end
9
9
 
10
10
  def reorder *args
11
11
  return self if args.blank?
12
- super *args.flatten.map { |a| assign_context(a.expr) if a.respond_to?(:expr); a }
12
+ super *args.flatten.map { |a| assign_context(a); a }
13
13
  end
14
14
 
15
15
  def build_where(opts, other = [])
@@ -17,8 +17,7 @@ module Eel
17
17
  when Arel::Nodes::Node
18
18
  nodes = [opts] + other
19
19
  nodes.each do |node|
20
- assign_context(node.left)
21
- assign_context(node.right)
20
+ assign_context(node)
22
21
  end
23
22
  nodes
24
23
  else
@@ -28,16 +27,26 @@ module Eel
28
27
 
29
28
  private
30
29
 
31
- def assign_context attr
32
- if attr.is_a?(Arel::Attributes::Attribute)
33
- case attr.relation
34
- when Symbol
35
- attr.relation = Arel::Table.new(attr.relation, table.engine)
36
- when NilClass
37
- attr.relation = table
38
- end
30
+ def assign_context input
31
+ case input
32
+ when Arel::Nodes::Unary
33
+ assign_context(input.expr)
34
+ when Arel::Nodes::Binary
35
+ assign_context(input.left)
36
+ assign_context(input.right)
37
+ when Arel::Nodes::And
38
+ input.children.each {|ch| assign_context(ch)}
39
+ when Arel::Attributes::Attribute
40
+ case input.relation
41
+ when Symbol
42
+ input.relation = Arel::Table.new(input.relation, table.engine)
43
+ when NilClass
44
+ input.relation = table
45
+ end
46
+ else
47
+ # do nothing
39
48
  end
40
- attr
49
+ input
41
50
  end
42
51
 
43
52
  end
@@ -22,11 +22,11 @@ module Eel
22
22
  end
23
23
 
24
24
  def respond_to_missing? method_name, private = false
25
- Arel::Attributes::Attribute.new.respond_to?(method_name)
25
+ method_name.in? predicates
26
26
  end
27
27
 
28
28
  def method_missing method_name, *args, &block
29
- if (attr = Arel::Attributes::Attribute.new(nil, self)).respond_to?(method_name)
29
+ if method_name.in? predicates
30
30
  if args.present?
31
31
  attr.send(method_name, *args) # binary nodes
32
32
  else
@@ -37,6 +37,12 @@ module Eel
37
37
  end
38
38
  end
39
39
 
40
+ private
41
+
42
+ def predicates
43
+ Arel::OrderPredications.instance_methods + Arel::Predications.instance_methods
44
+ end
45
+
40
46
  end
41
47
  end
42
48
  end
data/lib/eel/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Eel
2
- VERSION = '1.0.0.pre'
2
+ VERSION = '1.0.2'
3
3
  end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.pre
5
- prerelease: 6
4
+ prerelease:
5
+ version: 1.0.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Ivan Efremov
@@ -10,40 +10,40 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-12-02 00:00:00.000000000 Z
13
+ date: 2013-01-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: activerecord
17
- requirement: !ruby/object:Gem::Requirement
18
- none: false
16
+ version_requirements: !ruby/object:Gem::Requirement
19
17
  requirements:
20
18
  - - ~>
21
19
  - !ruby/object:Gem::Version
22
- version: '3.2'
20
+ version: '3.1'
21
+ none: false
22
+ name: activerecord
23
23
  type: :runtime
24
24
  prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- none: false
25
+ requirement: !ruby/object:Gem::Requirement
27
26
  requirements:
28
27
  - - ~>
29
28
  - !ruby/object:Gem::Version
30
- version: '3.2'
31
- - !ruby/object:Gem::Dependency
32
- name: activesupport
33
- requirement: !ruby/object:Gem::Requirement
29
+ version: '3.1'
34
30
  none: false
31
+ - !ruby/object:Gem::Dependency
32
+ version_requirements: !ruby/object:Gem::Requirement
35
33
  requirements:
36
34
  - - ~>
37
35
  - !ruby/object:Gem::Version
38
- version: '3.2'
36
+ version: '3.1'
37
+ none: false
38
+ name: activesupport
39
39
  type: :runtime
40
40
  prerelease: false
41
- version_requirements: !ruby/object:Gem::Requirement
42
- none: false
41
+ requirement: !ruby/object:Gem::Requirement
43
42
  requirements:
44
43
  - - ~>
45
44
  - !ruby/object:Gem::Version
46
- version: '3.2'
45
+ version: '3.1'
46
+ none: false
47
47
  description: It is more like Squeel but without Squ
48
48
  email:
49
49
  - st8998@gmail.com
@@ -63,17 +63,17 @@ rdoc_options: []
63
63
  require_paths:
64
64
  - lib
65
65
  required_ruby_version: !ruby/object:Gem::Requirement
66
- none: false
67
66
  requirements:
68
67
  - - ! '>='
69
68
  - !ruby/object:Gem::Version
70
69
  version: '0'
71
- required_rubygems_version: !ruby/object:Gem::Requirement
72
70
  none: false
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
72
  requirements:
74
- - - ! '>'
73
+ - - ! '>='
75
74
  - !ruby/object:Gem::Version
76
- version: 1.3.1
75
+ version: '0'
76
+ none: false
77
77
  requirements: []
78
78
  rubyforge_project:
79
79
  rubygems_version: 1.8.23