groonga-command 1.2.9 → 1.3.0

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.
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