eel 1.0.0.pre → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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