rethinkdb 1.2.6.0 → 1.2.6.1

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.
Files changed (5) hide show
  1. data/lib/jsons.rb +8 -4
  2. data/lib/net.rb +3 -3
  3. data/lib/rql.rb +17 -11
  4. data/lib/sequence.rb +4 -6
  5. metadata +4 -4
@@ -53,12 +53,16 @@ module RethinkDB
53
53
  JSON_Expression.new [:call, [:getattr, attrname], [self]]
54
54
  end
55
55
 
56
- # Check whether a JSON object has a particular attribute. The
56
+ # Check whether a JSON object has all of the particular attributes. The
57
57
  # following are equivalent:
58
- # r({:id => 1}).contains(:id)
58
+ # r({:id => 1, :val => 2}).contains(:id, :val)
59
59
  # r(true)
60
- def contains(attrname)
61
- JSON_Expression.new [:call, [:contains, attrname], [self]]
60
+ def contains(*attrnames)
61
+ if attrnames.length == 1
62
+ JSON_Expression.new [:call, [:contains, attrnames[0]], [self]]
63
+ else
64
+ self.contains(attrnames[0]) & self.contains(*attrnames[1..-1])
65
+ end
62
66
  end
63
67
 
64
68
  # Construct a JSON object that has a subset of the attributes of
data/lib/net.rb CHANGED
@@ -218,7 +218,7 @@ module RethinkDB
218
218
 
219
219
  # Close the connection.
220
220
  def close
221
- @listener.terminate! if @listener
221
+ @listener.terminate if @listener
222
222
  @listener = nil
223
223
  @socket.close
224
224
  @socket = nil
@@ -240,7 +240,7 @@ module RethinkDB
240
240
  end
241
241
  end
242
242
  @socket.send([@@magic_number].pack('L<'), 0)
243
- @listener.terminate! if @listener
243
+ @listener.terminate if @listener
244
244
  @listener = Thread.new do
245
245
  loop do
246
246
  begin
@@ -251,7 +251,7 @@ module RethinkDB
251
251
  @listener = nil
252
252
  @waiters.each {|kv| kv[1].signal}
253
253
  end
254
- Thread.current.terminate!
254
+ Thread.current.terminate
255
255
  abort("unreachable")
256
256
  end
257
257
  #TODO: Recovery
data/lib/rql.rb CHANGED
@@ -29,22 +29,18 @@ module RethinkDB
29
29
 
30
30
  # Construct a javascript expression, which may refer to variables in scope
31
31
  # (use <b>+to_s+</b> to get the name of a variable query, or simply splice
32
- # it in). Defaults to a javascript expression, but if the optional second
33
- # argument is <b>+:func+</b>, then you may instead provide the body of a
34
- # javascript function. If you have a table <b>+table+</b>, the following
35
- # are equivalent:
32
+ # it in). Behaves as if passed to the standard `eval` function in
33
+ # JavaScript. If you have a table <b>+table+</b>, the following are
34
+ # equivalent:
36
35
  # table.map{|row| row[:id]}
37
36
  # table.map{|row| r.js("#{row}.id")}
38
37
  # table.map{r.js("this.id")} #implicit variable
39
- # table.map{r.js("return this.id;", :func)} #implicit variable
38
+ # table.map{r.js("var a = this.id; a;")} #implicit variable
40
39
  # As are:
41
40
  # r.let(:a => 1, :b => 2) { r.add(r.letvar('a'), r.letvar('b'), 1) }
42
41
  # r.let(:a => 1, :b => 2) { r.js('a+b+1') }
43
- def self.js(str, type=:expr);
44
- if type == :expr then JSON_Expression.new [:js, "return #{str}"]
45
- elsif type == :func then JSON_Expression.new [:js, str]
46
- else raise TypeError, 'Type of javascript must be either :expr or :func.'
47
- end
42
+ def self.js(str);
43
+ JSON_Expression.new [:js, str]
48
44
  end
49
45
 
50
46
  # Refer to the database named <b>+db_name+</b>. Usually used as a
@@ -105,7 +101,7 @@ or Hash)."
105
101
  # Test a predicate and execute one of two branches (just like
106
102
  # Ruby's <b>+if+</b>). For example, if we have a table
107
103
  # <b>+table+</b>:
108
- # table.update{|row| r.if(row[:score] < 10, {:score => 10}, {})}
104
+ # table.update{|row| r.branch(row[:score] < 10, {:score => 10}, {})}
109
105
  # will change every row with score below 10 in <b>+table+</b> to have score 10.
110
106
  def self.branch(test, t_branch, f_branch)
111
107
  tb = S.r(t_branch)
@@ -422,6 +418,16 @@ or Hash)."
422
418
  # A shortcut for Data_Collectors::avg
423
419
  def self.avg(*args); Data_Collectors.avg(*args); end
424
420
 
421
+ # Specify ascending ordering for a given attribute passed to order_by.
422
+ def self.asc(attr)
423
+ return [attr, true]
424
+ end
425
+
426
+ # Specify descending ordering for a given attribute passed to order_by.
427
+ def self.desc(attr)
428
+ return [attr, false]
429
+ end
430
+
425
431
  def self.boolprop(op, l, r) # :nodoc:
426
432
  badop = l.boolop? ? l : r
427
433
  if l.boolop? || r.boolop?
@@ -113,12 +113,10 @@ module RethinkDB
113
113
  # example, to sort first by name and then by social security
114
114
  # number for the table <b>+people+</b>, you could do:
115
115
  # people.order_by(:name, :ssn)
116
- # In place of an attribute name, you may provide a tuple of an attribute
117
- # name and a boolean specifying whether to sort in ascending order (which is
118
- # the default). For example:
119
- # people.order_by([:name, false], :ssn)
120
- # will sort first by name in descending order, and then by ssn in ascending
121
- # order.
116
+ # By default order_by sorts in ascending order. To explicitly specify the
117
+ # ordering wrap the attribute to be ordered by with r.asc or r.desc as in:
118
+ # people.order_by(r.desc(:name), :ssn)
119
+ # which sorts first by name from Z-A and then by ssn from 0-9.
122
120
  def order_by(*orderings)
123
121
  orderings.map!{|x| x.class == Array ? x : [x, true]}
124
122
  self.class.new [:call, [:orderby, *orderings], [self]]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rethinkdb
3
3
  version: !ruby/object:Gem::Version
4
- hash: 87
4
+ hash: 85
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
9
  - 6
10
- - 0
11
- version: 1.2.6.0
10
+ - 1
11
+ version: 1.2.6.1
12
12
  platform: ruby
13
13
  authors:
14
14
  - RethinkDB Inc.
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2012-11-13 00:00:00 Z
19
+ date: 2013-01-15 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: json