Module: Arel::Predications
- Included in:
- Attributes::Attribute, Nodes::Case, Nodes::Extract, Nodes::Function, Nodes::Grouping, Nodes::InfixOperation, Nodes::SqlLiteral, Nodes::UnaryOperation
- Defined in:
- lib/arel/predications.rb
Instance Method Summary collapse
- #between(other) ⇒ Object
- #concat(other) ⇒ Object
- #does_not_match(other, escape = nil, case_sensitive = false) ⇒ Object
- #does_not_match_all(others, escape = nil) ⇒ Object
- #does_not_match_any(others, escape = nil) ⇒ Object
- #does_not_match_regexp(other, case_sensitive = true) ⇒ Object
- #eq(other) ⇒ Object
- #eq_all(others) ⇒ Object
- #eq_any(others) ⇒ Object
- #gt(right) ⇒ Object
- #gt_all(others) ⇒ Object
- #gt_any(others) ⇒ Object
- #gteq(right) ⇒ Object
- #gteq_all(others) ⇒ Object
- #gteq_any(others) ⇒ Object
- #in(other) ⇒ Object
- #in_all(others) ⇒ Object
- #in_any(others) ⇒ Object
- #lt(right) ⇒ Object
- #lt_all(others) ⇒ Object
- #lt_any(others) ⇒ Object
- #lteq(right) ⇒ Object
- #lteq_all(others) ⇒ Object
- #lteq_any(others) ⇒ Object
- #matches(other, escape = nil, case_sensitive = false) ⇒ Object
- #matches_all(others, escape = nil, case_sensitive = false) ⇒ Object
- #matches_any(others, escape = nil, case_sensitive = false) ⇒ Object
- #matches_regexp(other, case_sensitive = true) ⇒ Object
- #not_between(other) ⇒ Object
- #not_eq(other) ⇒ Object
- #not_eq_all(others) ⇒ Object
- #not_eq_any(others) ⇒ Object
- #not_in(other) ⇒ Object
- #not_in_all(others) ⇒ Object
- #not_in_any(others) ⇒ Object
- #when(right) ⇒ Object
Instance Method Details
#between(other) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/arel/predications.rb', line 28 def between other if equals_quoted?(other.begin, -Float::INFINITY) if equals_quoted?(other.end, Float::INFINITY) not_in([]) elsif other.exclude_end? lt(other.end) else lteq(other.end) end elsif equals_quoted?(other.end, Float::INFINITY) gteq(other.begin) elsif other.exclude_end? gteq(other.begin).and(lt(other.end)) else left = quoted_node(other.begin) right = quoted_node(other.end) Nodes::Between.new(self, left.and(right)) end end |
#concat(other) ⇒ Object
206 207 208 |
# File 'lib/arel/predications.rb', line 206 def concat other Nodes::Concat.new self, other end |
#does_not_match(other, escape = nil, case_sensitive = false) ⇒ Object
138 139 140 |
# File 'lib/arel/predications.rb', line 138 def does_not_match other, escape = nil, case_sensitive = false Nodes::DoesNotMatch.new self, quoted_node(other), escape, case_sensitive end |
#does_not_match_all(others, escape = nil) ⇒ Object
150 151 152 |
# File 'lib/arel/predications.rb', line 150 def does_not_match_all others, escape = nil grouping_all :does_not_match, others, escape end |
#does_not_match_any(others, escape = nil) ⇒ Object
146 147 148 |
# File 'lib/arel/predications.rb', line 146 def does_not_match_any others, escape = nil grouping_any :does_not_match, others, escape end |
#does_not_match_regexp(other, case_sensitive = true) ⇒ Object
142 143 144 |
# File 'lib/arel/predications.rb', line 142 def does_not_match_regexp other, case_sensitive = true Nodes::NotRegexp.new self, quoted_node(other), case_sensitive end |
#eq(other) ⇒ Object
16 17 18 |
# File 'lib/arel/predications.rb', line 16 def eq other Nodes::Equality.new self, quoted_node(other) end |
#eq_all(others) ⇒ Object
24 25 26 |
# File 'lib/arel/predications.rb', line 24 def eq_all others grouping_all :eq, quoted_array(others) end |
#eq_any(others) ⇒ Object
20 21 22 |
# File 'lib/arel/predications.rb', line 20 def eq_any others grouping_any :eq, others end |
#gt(right) ⇒ Object
166 167 168 |
# File 'lib/arel/predications.rb', line 166 def gt right Nodes::GreaterThan.new self, quoted_node(right) end |
#gt_all(others) ⇒ Object
174 175 176 |
# File 'lib/arel/predications.rb', line 174 def gt_all others grouping_all :gt, others end |
#gt_any(others) ⇒ Object
170 171 172 |
# File 'lib/arel/predications.rb', line 170 def gt_any others grouping_any :gt, others end |
#gteq(right) ⇒ Object
154 155 156 |
# File 'lib/arel/predications.rb', line 154 def gteq right Nodes::GreaterThanOrEqual.new self, quoted_node(right) end |
#gteq_all(others) ⇒ Object
162 163 164 |
# File 'lib/arel/predications.rb', line 162 def gteq_all others grouping_all :gteq, others end |
#gteq_any(others) ⇒ Object
158 159 160 |
# File 'lib/arel/predications.rb', line 158 def gteq_any others grouping_any :gteq, others end |
#in(other) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/arel/predications.rb', line 48 def in other case other when Arel::SelectManager Arel::Nodes::In.new(self, other.ast) when Range if $VERBOSE warn <<-eowarn Passing a range to `#in` is deprecated. Call `#between`, instead. eowarn end between(other) when Enumerable Nodes::In.new self, quoted_array(other) else Nodes::In.new self, quoted_node(other) end end |
#in_all(others) ⇒ Object
70 71 72 |
# File 'lib/arel/predications.rb', line 70 def in_all others grouping_all :in, others end |
#in_any(others) ⇒ Object
66 67 68 |
# File 'lib/arel/predications.rb', line 66 def in_any others grouping_any :in, others end |
#lt(right) ⇒ Object
178 179 180 |
# File 'lib/arel/predications.rb', line 178 def lt right Nodes::LessThan.new self, quoted_node(right) end |
#lt_all(others) ⇒ Object
186 187 188 |
# File 'lib/arel/predications.rb', line 186 def lt_all others grouping_all :lt, others end |
#lt_any(others) ⇒ Object
182 183 184 |
# File 'lib/arel/predications.rb', line 182 def lt_any others grouping_any :lt, others end |
#lteq(right) ⇒ Object
190 191 192 |
# File 'lib/arel/predications.rb', line 190 def lteq right Nodes::LessThanOrEqual.new self, quoted_node(right) end |
#lteq_all(others) ⇒ Object
198 199 200 |
# File 'lib/arel/predications.rb', line 198 def lteq_all others grouping_all :lteq, others end |
#lteq_any(others) ⇒ Object
194 195 196 |
# File 'lib/arel/predications.rb', line 194 def lteq_any others grouping_any :lteq, others end |
#matches(other, escape = nil, case_sensitive = false) ⇒ Object
122 123 124 |
# File 'lib/arel/predications.rb', line 122 def matches other, escape = nil, case_sensitive = false Nodes::Matches.new self, quoted_node(other), escape, case_sensitive end |
#matches_all(others, escape = nil, case_sensitive = false) ⇒ Object
134 135 136 |
# File 'lib/arel/predications.rb', line 134 def matches_all others, escape = nil, case_sensitive = false grouping_all :matches, others, escape, case_sensitive end |
#matches_any(others, escape = nil, case_sensitive = false) ⇒ Object
130 131 132 |
# File 'lib/arel/predications.rb', line 130 def matches_any others, escape = nil, case_sensitive = false grouping_any :matches, others, escape, case_sensitive end |
#matches_regexp(other, case_sensitive = true) ⇒ Object
126 127 128 |
# File 'lib/arel/predications.rb', line 126 def matches_regexp other, case_sensitive = true Nodes::Regexp.new self, quoted_node(other), case_sensitive end |
#not_between(other) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/arel/predications.rb', line 74 def not_between other if equals_quoted?(other.begin, -Float::INFINITY) if equals_quoted?(other.end, Float::INFINITY) self.in([]) elsif other.exclude_end? gteq(other.end) else gt(other.end) end elsif equals_quoted?(other.end, Float::INFINITY) lt(other.begin) else left = lt(other.begin) right = if other.exclude_end? gteq(other.end) else gt(other.end) end left.or(right) end end |
#not_eq(other) ⇒ Object
4 5 6 |
# File 'lib/arel/predications.rb', line 4 def not_eq other Nodes::NotEqual.new self, quoted_node(other) end |
#not_eq_all(others) ⇒ Object
12 13 14 |
# File 'lib/arel/predications.rb', line 12 def not_eq_all others grouping_all :not_eq, others end |
#not_eq_any(others) ⇒ Object
8 9 10 |
# File 'lib/arel/predications.rb', line 8 def not_eq_any others grouping_any :not_eq, others end |
#not_in(other) ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 |
# File 'lib/arel/predications.rb', line 96 def not_in other case other when Arel::SelectManager Arel::Nodes::NotIn.new(self, other.ast) when Range if $VERBOSE warn <<-eowarn Passing a range to `#not_in` is deprecated. Call `#not_between`, instead. eowarn end not_between(other) when Enumerable Nodes::NotIn.new self, quoted_array(other) else Nodes::NotIn.new self, quoted_node(other) end end |
#not_in_all(others) ⇒ Object
118 119 120 |
# File 'lib/arel/predications.rb', line 118 def not_in_all others grouping_all :not_in, others end |
#not_in_any(others) ⇒ Object
114 115 116 |
# File 'lib/arel/predications.rb', line 114 def not_in_any others grouping_any :not_in, others end |