groonga-command 1.2.9 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1845fa485926c638e58f55c29020a4227cbafa3d
4
- data.tar.gz: f410651029985778155761b14d21489e54773aa2
3
+ metadata.gz: afa89d09d8efc12ca74d48129881d5a327995e1b
4
+ data.tar.gz: 2ef702ff862788373a4208fd34342797fe6e6256
5
5
  SHA512:
6
- metadata.gz: f45829ed15208c836bc08af5f92c9f14eb95c558962b0cf1c7f3b50be90dcbb635a601a9e7aa0361f3c473a761e8f2f1a664ed3a80f498c1d06fbea82e2433de
7
- data.tar.gz: 7e0aa2da9e04ff65ddd853fc22ec0d7252b854229c810ff57544cbbbdff3d804ae253412f1742bf0e4493c1fabb006afdd3a360141f6bcd450fa7994cedd137a
6
+ metadata.gz: a8a28ba413387eaaeae03810c0d4229b7e4412c76a855bb4563abe1bc1a89a4c4851d88ad8fe6f1690a97110aaaffdefaac581379e6b01452936f89bf4eb2654
7
+ data.tar.gz: 9f4ad75123c52bdd7a9e73e2dcc44d34705cca63de756b84aea774889393a982f868d9ccec5036a9e85960bf3c9130c9adebee83c318a380436a5a62c91b4f8f
@@ -1,5 +1,13 @@
1
1
  # News
2
2
 
3
+ ## 1.3.0: 2016-12-08
4
+
5
+ ### Improvements
6
+
7
+ * {Groonga::Command::Load}: Supported `output_ids` parameter.
8
+
9
+ * {Groonga::Command::Select}: Supported slices.
10
+
3
11
  ## 1.2.8: 2016-10-11
4
12
 
5
13
  ### Improvements
@@ -36,6 +36,7 @@ module Groonga
36
36
  :ifexists,
37
37
  :input_type,
38
38
  :each,
39
+ :output_ids,
39
40
  ]
40
41
  end
41
42
  end
@@ -58,6 +59,13 @@ module Groonga
58
59
  @columns ||= parse_columns(self[:columns])
59
60
  end
60
61
 
62
+ # @return [Boolean] `true` if `output_ids` value is `"yes"`.
63
+ #
64
+ # @since 1.3.0
65
+ def output_ids?
66
+ self[:output_ids] == "yes"
67
+ end
68
+
61
69
  private
62
70
  def parse_values(values)
63
71
  return values if values.nil?
@@ -1,4 +1,5 @@
1
1
  # Copyright (C) 2012-2016 Kouhei Sutou <kou@clear-code.com>
2
+ # Copyright (C) 2016 Masafumi Yokoyama <yokoyama@clear-code.com>
2
3
  #
3
4
  # This library is free software; you can redistribute it and/or
4
5
  # modify it under the terms of the GNU Lesser General Public
@@ -106,6 +107,13 @@ module Groonga
106
107
  @labeled_drilldowns ||= parse_labeled_drilldowns
107
108
  end
108
109
 
110
+ # @return [::Hash<String, Select>] The slices.
111
+ #
112
+ # @since 1.3.0
113
+ def slices
114
+ @slices ||= parse_slices
115
+ end
116
+
109
117
  def output_columns
110
118
  self[:output_columns]
111
119
  end
@@ -157,6 +165,28 @@ module Groonga
157
165
  labeled_drilldowns
158
166
  end
159
167
 
168
+ def parse_slices
169
+ raw_slices = {}
170
+ @arguments.each do |name, value|
171
+ case name.to_s
172
+ when /\Aslices?\[(.+?)\]\.(.+?)\z/
173
+ label = $1
174
+ parameter_name = $2
175
+ raw_slices[label] ||= {}
176
+ raw_slices[label][parameter_name] = value
177
+ end
178
+ end
179
+ build_slices(raw_slices)
180
+ end
181
+
182
+ def build_slices(raw_slices)
183
+ slices = {}
184
+ raw_slices.each do |label, raw_slice|
185
+ slices[label] = Select.new(raw_slice)
186
+ end
187
+ slices
188
+ end
189
+
160
190
  class Drilldown < Struct.new(:keys,
161
191
  :sort_keys,
162
192
  :output_columns,
@@ -16,6 +16,6 @@
16
16
 
17
17
  module Groonga
18
18
  module Command
19
- VERSION = "1.2.9"
19
+ VERSION = "1.3.0"
20
20
  end
21
21
  end
@@ -31,6 +31,7 @@ class LoadCommandTest < Test::Unit::TestCase
31
31
  ifexists = "_key == \"Alice\""
32
32
  input_type = "json"
33
33
  each = "strlen(_key)"
34
+ output_ids = "no"
34
35
 
35
36
  ordered_arguments = [
36
37
  values,
@@ -39,6 +40,7 @@ class LoadCommandTest < Test::Unit::TestCase
39
40
  ifexists,
40
41
  input_type,
41
42
  each,
43
+ output_ids,
42
44
  ]
43
45
  command = load_command({}, ordered_arguments)
44
46
  assert_equal({
@@ -48,6 +50,7 @@ class LoadCommandTest < Test::Unit::TestCase
48
50
  :ifexists => ifexists,
49
51
  :input_type => input_type,
50
52
  :each => each,
53
+ :output_ids => output_ids,
51
54
  },
52
55
  command.arguments)
53
56
  end
@@ -87,4 +90,20 @@ class LoadCommandTest < Test::Unit::TestCase
87
90
  })
88
91
  end
89
92
  end
93
+
94
+ class OutputIDsTest < self
95
+ def test_specified
96
+ command = load_command({"output_ids" => "yes"})
97
+ assert do
98
+ command.output_ids?
99
+ end
100
+ end
101
+
102
+ def test_omitted
103
+ command = load_command
104
+ assert do
105
+ not command.output_ids?
106
+ end
107
+ end
108
+ end
90
109
  end
@@ -1,4 +1,5 @@
1
1
  # Copyright (C) 2011-2016 Kouhei Sutou <kou@clear-code.com>
2
+ # Copyright (C) 2016 Masafumi Yokoyama <yokoyama@clear-code.com>
2
3
  #
3
4
  # This library is free software; you can redistribute it and/or
4
5
  # modify it under the terms of the GNU Lesser General Public
@@ -216,4 +217,24 @@ class SelectCommandTest < Test::Unit::TestCase
216
217
  drilldown
217
218
  end
218
219
  end
220
+
221
+ class SlicesTest < self
222
+ def test_multiple
223
+ parameters = {
224
+ "slices[groonga].query" => "tag:Groonga",
225
+ "slices[rroonga].filter" => "tag == Rroonga",
226
+ "slices[rroonga].sort_keys" => "date",
227
+ "slices[rroonga].output_columns" => "_key, date",
228
+ }
229
+ command = select_command(parameters)
230
+
231
+ slices = {
232
+ "groonga" => select_command(:query => "tag:Groonga"),
233
+ "rroonga" => select_command(:filter => "tag == Rroonga",
234
+ :sort_keys => "date",
235
+ :output_columns => "_key, date"),
236
+ }
237
+ assert_equal(slices, command.slices)
238
+ end
239
+ end
219
240
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groonga-command
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.9
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-11 00:00:00.000000000 Z
11
+ date: 2016-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -266,54 +266,54 @@ specification_version: 4
266
266
  summary: Groonga-command is a library that represents [Groonga](http://groonga.org/)'s
267
267
  command. You can write a program that handle Groonga's command by using groonga-command.
268
268
  test_files:
269
- - test/groonga-command-test-utils.rb
270
- - test/command/test-config-delete.rb
271
- - test/command/test-object-remove.rb
272
- - test/command/test-table-tokenize.rb
269
+ - test/run-test.rb
270
+ - test/command/test-column-rename.rb
271
+ - test/command/test-table-remove.rb
272
+ - test/command/test-object-inspect.rb
273
+ - test/command/test-truncate.rb
273
274
  - test/command/test-reindex.rb
274
- - test/command/test-plugin-unregister.rb
275
- - test/command/test-io-flush.rb
276
- - test/command/test-base.rb
277
- - test/command/test-logical-count.rb
275
+ - test/command/test-normalize.rb
276
+ - test/command/test-tokenize.rb
278
277
  - test/command/test-table-rename.rb
279
- - test/command/test-column-rename.rb
278
+ - test/command/test-logical-range-filter.rb
280
279
  - test/command/test-dump.rb
281
- - test/command/test-normalize.rb
280
+ - test/command/test-suggest.rb
281
+ - test/command/test-request-cancel.rb
282
+ - test/command/test-config-set.rb
283
+ - test/command/test-get.rb
284
+ - test/command/test-query-expand.rb
285
+ - test/command/test-logical-select.rb
286
+ - test/command/test-column-create.rb
287
+ - test/command/test-log-put.rb
282
288
  - test/command/test-config-get.rb
289
+ - test/command/test-log-level.rb
290
+ - test/command/test-column-list.rb
283
291
  - test/command/test-register.rb
292
+ - test/command/test-ruby-eval.rb
293
+ - test/command/test-plugin-register.rb
294
+ - test/command/test-table-list.rb
295
+ - test/command/test-logical-table-remove.rb
296
+ - test/command/test-config-delete.rb
284
297
  - test/command/test-shutdown.rb
285
- - test/command/test-delete.rb
286
- - test/command/test-column-copy.rb
287
- - test/command/test-tokenize.rb
288
- - test/command/test-log-put.rb
298
+ - test/command/test-io-flush.rb
299
+ - test/command/test-table-create.rb
300
+ - test/command/test-ruby-load.rb
289
301
  - test/command/test-load.rb
290
- - test/command/test-column-list.rb
291
- - test/command/test-plugin-register.rb
292
- - test/command/test-request-cancel.rb
293
- - test/command/test-column-create.rb
294
- - test/command/test-config-set.rb
295
- - test/command/test-logical-range-filter.rb
296
- - test/command/test-object-inspect.rb
302
+ - test/command/test-delete.rb
303
+ - test/command/test-select.rb
304
+ - test/command/test-plugin-unregister.rb
305
+ - test/command/test-column-remove.rb
306
+ - test/command/test-range-filter.rb
297
307
  - test/command/format/test-command.rb
298
- - test/command/test-logical-select.rb
299
- - test/command/test-get.rb
300
- - test/command/test-thread-limit.rb
301
- - test/command/test-table-list.rb
308
+ - test/command/test-column-copy.rb
309
+ - test/command/test-base.rb
302
310
  - test/command/test-object-exist.rb
303
- - test/command/test-log-level.rb
304
- - test/command/test-range-filter.rb
305
311
  - test/command/test-status.rb
306
- - test/command/test-logical-shard-list.rb
312
+ - test/command/test-thread-limit.rb
307
313
  - test/command/test-schema.rb
308
- - test/command/test-suggest.rb
309
- - test/command/test-select.rb
310
- - test/command/test-column-remove.rb
311
- - test/command/test-ruby-eval.rb
312
- - test/command/test-table-create.rb
313
- - test/command/test-table-remove.rb
314
- - test/command/test-ruby-load.rb
314
+ - test/command/test-table-tokenize.rb
315
+ - test/command/test-logical-shard-list.rb
315
316
  - test/command/test-table-copy.rb
316
- - test/command/test-query-expand.rb
317
- - test/command/test-truncate.rb
318
- - test/command/test-logical-table-remove.rb
319
- - test/run-test.rb
317
+ - test/command/test-object-remove.rb
318
+ - test/command/test-logical-count.rb
319
+ - test/groonga-command-test-utils.rb