~ubuntu-branches/ubuntu/vivid/ruby-sequel/vivid

« back to all changes in this revision

Viewing changes to lib/sequel/extensions/pg_range_ops.rb

  • Committer: Package Import Robot
  • Author(s): Dmitry Borodaenko, Dmitry Borodaenko, Cédric Boutillier
  • Date: 2013-08-10 18:38:17 UTC
  • mfrom: (1.1.8)
  • Revision ID: package-import@ubuntu.com-20130810183817-iqanz804j32i5myi
Tags: 4.1.1-1
[ Dmitry Borodaenko ]
* New upstream release.
* Standards-Version upgraded to 3.9.4 (no changes).
* Added Build-Depend on ruby-sqlite3.

[ Cédric Boutillier ]
* debian/control: remove obsolete DM-Upload-Allowed flag.
* use canonical URI in Vcs-* fields.
* debian/copyright: use DEP5 copyright-format/1.0 official URL for Format
  field.
* Update debian/watch. Thanks Bart Martens.

Show diffs side-by-side

added added

removed removed

Lines of Context:
5
5
#
6
6
#   Sequel.extension :pg_range_ops
7
7
#
8
 
# The most common usage is taking an object that represents an SQL
9
 
# identifier (such as a :symbol), and calling #pg_range on it:
 
8
# The most common usage is passing an expression to Sequel.pg_range_op:
 
9
#
 
10
#   r = Sequel.pg_range_op(:range)
 
11
#
 
12
# If you have also loaded the pg_range extension, you can use
 
13
# Sequel.pg_range as well:
 
14
#
 
15
#   r = Sequel.pg_range(:range)
 
16
#
 
17
# Also, on most Sequel expression objects, you can call the pg_range
 
18
# method:
 
19
#
 
20
#   r = Sequel.expr(:range).pg_range
 
21
#
 
22
# If you have loaded the {core_extensions extension}[link:files/doc/core_extensions_rdoc.html]),
 
23
# or you have loaded the {core_refinements extension}[link:files/doc/core_refinements_rdoc.html])
 
24
# and have activated refinements for the file, you can also use Symbol#pg_range:
10
25
#
11
26
#   r = :range.pg_range
12
27
#
14
29
# for easier querying:
15
30
#
16
31
#   r.contains(:other)      # range @> other
17
 
#   r.contained_by(:other)  # range <@ other 
 
32
#   r.contained_by(:other)  # range <@ other
18
33
#   r.overlaps(:other)      # range && other
19
34
#   r.left_of(:other)       # range << other
20
35
#   r.right_of(:other)      # range >> other
21
 
#   r.starts_before(:other) # range &< other
22
 
#   r.ends_after(:other)    # range &> other
 
36
#   r.starts_after(:other)  # range &> other
 
37
#   r.ends_before(:other)   # range &< other
23
38
#   r.adjacent_to(:other)   # range -|- other
24
39
#
25
40
#   r.lower            # lower(range)
51
66
        :contained_by => ["(".freeze, " <@ ".freeze, ")".freeze].freeze,
52
67
        :left_of => ["(".freeze, " << ".freeze, ")".freeze].freeze,
53
68
        :right_of => ["(".freeze, " >> ".freeze, ")".freeze].freeze,
54
 
        :starts_before => ["(".freeze, " &< ".freeze, ")".freeze].freeze,
55
 
        :ends_after => ["(".freeze, " &> ".freeze, ")".freeze].freeze,
 
69
        :ends_before => ["(".freeze, " &< ".freeze, ")".freeze].freeze,
 
70
        :starts_after => ["(".freeze, " &> ".freeze, ")".freeze].freeze,
56
71
        :adjacent_to => ["(".freeze, " -|- ".freeze, ")".freeze].freeze,
57
72
        :overlaps => ["(".freeze, " && ".freeze, ")".freeze].freeze,
58
73
      }
108
123
    end
109
124
  end
110
125
 
 
126
  module SQL::Builders
 
127
    # Return the expression wrapped in the Postgres::RangeOp.
 
128
    def pg_range_op(v)
 
129
      case v
 
130
      when Postgres::RangeOp
 
131
        v
 
132
      else
 
133
        Postgres::RangeOp.new(v)
 
134
      end
 
135
    end
 
136
  end
 
137
 
111
138
  class SQL::GenericExpression
112
139
    include Sequel::Postgres::RangeOpMethods
113
140
  end
117
144
  end
118
145
end
119
146
 
120
 
class Symbol
121
 
  include Sequel::Postgres::RangeOpMethods
122
 
end
 
147
# :nocov:
 
148
if Sequel.core_extensions?
 
149
  class Symbol
 
150
    include Sequel::Postgres::RangeOpMethods
 
151
  end
 
152
end
 
153
 
 
154
if defined?(Sequel::CoreRefinements)
 
155
  module Sequel::CoreRefinements
 
156
    refine Symbol do
 
157
      include Sequel::Postgres::RangeOpMethods
 
158
    end
 
159
  end
 
160
end
 
161
# :nocov: