sakuramochi 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -62,7 +62,6 @@ module Sakuramochi
62
62
  when ActiveRecord::Relation
63
63
  value = value.select(value.klass.arel_table[value.klass.primary_key]) if value.select_values.empty?
64
64
  attribute.in(value.arel.ast)
65
- when Array, ActiveRecord::Associations::CollectionProxy
66
65
  when Array, ActiveRecord::Associations::CollectionProxy
67
66
  values = value.to_a.map {|x| x.is_a?(ActiveRecord::Base) ? x.id : x}
68
67
  ranges, values = values.partition {|v| v.is_a?(Range) || v.is_a?(Arel::Relation)}
@@ -10,50 +10,47 @@ module Sakuramochi
10
10
  alias :build_where :build_where_with_condition
11
11
  end
12
12
 
13
- module InstanceMethods
14
- def collapse_conditions(node, other)
15
- case node
16
- when Sakuramochi::Condition::Nodes::Expression
17
- case node.operator.to_s
18
- when 'and'
19
- left = collapse_conditions(node.left, other)
20
- right = collapse_conditions(node.right, other)
21
- left && right ? Arel::Nodes::And.new([left, right]) : left || right
22
-
23
- when 'or'
24
- left = collapse_conditions(node.left, other)
25
- right = collapse_conditions(node.right, other)
26
- left && right ? Arel::Nodes::Or.new(left, right) : left || right
27
- end
28
-
29
- when Sakuramochi::Condition::Nodes::Term
30
- case node.operator.to_s
31
- when 'not'
32
- right = collapse_conditions(node.value, other)
33
- Arel::Nodes::Not.new(right) if right
34
- end
35
-
36
- when Sakuramochi::Condition::Nodes::Factor
37
- wheres = build_where_without_condition(node.value, other)
38
- arel = table.from(table)
39
- collapse_wheres(arel, (wheres - ['']).uniq)
40
- arel.constraints.inject { |left, right| left.and(right) }
41
-
42
- when Sakuramochi::Condition::Nodes::Group
43
- expression = collapse_conditions(node.expression, other)
44
- Arel::Nodes::Grouping.new(expression) if expression
13
+ def collapse_conditions(node, other)
14
+ case node
15
+ when Sakuramochi::Condition::Nodes::Expression
16
+ case node.operator.to_s
17
+ when 'and'
18
+ left = collapse_conditions(node.left, other)
19
+ right = collapse_conditions(node.right, other)
20
+ left && right ? Arel::Nodes::And.new([left, right]) : left || right
21
+
22
+ when 'or'
23
+ left = collapse_conditions(node.left, other)
24
+ right = collapse_conditions(node.right, other)
25
+ left && right ? Arel::Nodes::Or.new(left, right) : left || right
45
26
  end
46
- end
47
27
 
48
- def build_where_with_condition(opts, other = [])
49
- if Sakuramochi::Condition.condition?(opts)
50
- ast = Sakuramochi::Condition::Parser.new(opts.dup).parse
51
- [collapse_conditions(ast, other)].compact
52
- else
53
- build_where_without_condition(opts, other)
28
+ when Sakuramochi::Condition::Nodes::Term
29
+ case node.operator.to_s
30
+ when 'not'
31
+ right = collapse_conditions(node.value, other)
32
+ Arel::Nodes::Not.new(right) if right
54
33
  end
34
+
35
+ when Sakuramochi::Condition::Nodes::Factor
36
+ wheres = build_where_without_condition(node.value, other)
37
+ arel = table.from(table)
38
+ collapse_wheres(arel, (wheres - ['']).uniq)
39
+ arel.constraints.inject { |left, right| left.and(right) }
40
+
41
+ when Sakuramochi::Condition::Nodes::Group
42
+ expression = collapse_conditions(node.expression, other)
43
+ Arel::Nodes::Grouping.new(expression) if expression
55
44
  end
56
45
  end
57
46
 
47
+ def build_where_with_condition(opts, other = [])
48
+ if Sakuramochi::Condition.condition?(opts)
49
+ ast = Sakuramochi::Condition::Parser.new(opts.dup).parse
50
+ [collapse_conditions(ast, other)].compact
51
+ else
52
+ build_where_without_condition(opts, other)
53
+ end
54
+ end
58
55
  end
59
56
  end
@@ -1,3 +1,3 @@
1
1
  module Sakuramochi
2
- VERSION = "0.5.4"
2
+ VERSION = "0.5.5"
3
3
  end
data/sakuramochi.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |s|
7
7
  s.version = Sakuramochi::VERSION
8
8
  s.authors = ["mashiro"]
9
9
  s.email = ["mail@mashiro.org"]
10
- s.homepage = ""
10
+ s.homepage = "https://github.com/mashiro/sakuramochi"
11
11
  s.summary = %q{Minimal extensions for ActiveRecord 3}
12
12
  s.description = %q{Predicates and conditions that extends to the ActiveRecord 3}
13
13
 
@@ -20,6 +20,7 @@ Gem::Specification.new do |s|
20
20
 
21
21
  s.add_dependency "activesupport", "~> 3.0"
22
22
  s.add_dependency "activerecord", "~> 3.0"
23
+ s.add_development_dependency "rake"
23
24
  s.add_development_dependency "rspec"
24
25
  s.add_development_dependency "sqlite3"
25
26
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sakuramochi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.4
4
+ version: 0.5.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-12-19 00:00:00.000000000Z
12
+ date: 2012-01-10 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &14986060 !ruby/object:Gem::Requirement
16
+ requirement: &22523360 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *14986060
24
+ version_requirements: *22523360
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activerecord
27
- requirement: &14985560 !ruby/object:Gem::Requirement
27
+ requirement: &22522740 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,21 @@ dependencies:
32
32
  version: '3.0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *14985560
35
+ version_requirements: *22522740
36
+ - !ruby/object:Gem::Dependency
37
+ name: rake
38
+ requirement: &22461240 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
45
+ prerelease: false
46
+ version_requirements: *22461240
36
47
  - !ruby/object:Gem::Dependency
37
48
  name: rspec
38
- requirement: &15034740 !ruby/object:Gem::Requirement
49
+ requirement: &22460780 !ruby/object:Gem::Requirement
39
50
  none: false
40
51
  requirements:
41
52
  - - ! '>='
@@ -43,10 +54,10 @@ dependencies:
43
54
  version: '0'
44
55
  type: :development
45
56
  prerelease: false
46
- version_requirements: *15034740
57
+ version_requirements: *22460780
47
58
  - !ruby/object:Gem::Dependency
48
59
  name: sqlite3
49
- requirement: &15034280 !ruby/object:Gem::Requirement
60
+ requirement: &22460360 !ruby/object:Gem::Requirement
50
61
  none: false
51
62
  requirements:
52
63
  - - ! '>='
@@ -54,7 +65,7 @@ dependencies:
54
65
  version: '0'
55
66
  type: :development
56
67
  prerelease: false
57
- version_requirements: *15034280
68
+ version_requirements: *22460360
58
69
  description: Predicates and conditions that extends to the ActiveRecord 3
59
70
  email:
60
71
  - mail@mashiro.org
@@ -85,7 +96,7 @@ files:
85
96
  - spec/spec_helper.rb
86
97
  - spec/support/matcher.rb
87
98
  - spec/support/schema.rb
88
- homepage: ''
99
+ homepage: https://github.com/mashiro/sakuramochi
89
100
  licenses: []
90
101
  post_install_message:
91
102
  rdoc_options: []