groonga-command-parser 1.1.5 → 1.1.7

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
  SHA256:
3
- metadata.gz: 5f7e2b01c72582f1718fdf43f61bb224754697b48fb283523fe30ef7273bb6d0
4
- data.tar.gz: 0feaf747b1f1e28d4300ffe35044f94887b44571f1958d592b6c9c9f6b4ee739
3
+ metadata.gz: d1c7ab070f9742299d45da97516fb76767ce62259830b13d8a73ce0ccdcc25cb
4
+ data.tar.gz: 5aef3400a00b4b77a91705e1293874a33ad838b81823f9308a30a0edb73aa754
5
5
  SHA512:
6
- metadata.gz: 8d6e9e681c69244925c5366d7a9098a265194ac2c2ec64952ddfbd72ab584209ff14c763d3f3aebd1dc8454409b0abe3a928bba78cb32aa17d1bb883bc35c7b2
7
- data.tar.gz: e096edc06404d287db93fb984e531c489290465dbb1b13c5ad719eac9a8f7e4f472fbb4acf059b66b621c875b8678fb486de225489acf8fd689bcbddfc140e38
6
+ metadata.gz: 18f975cff3610220604ffea180db48324daad2d46d55943b727e91ba44fa4438077d0bcc25f810b9fe4f820d9f47312dc28cb9042bdcd7edc243db46ae8cdaa7
7
+ data.tar.gz: cec4a3661c62a357642be784c5050ed042a56be5805b9d6dc23aa178b61ca6bf111777eef702ded1dce44c637fa21f55f13cd6f1e5a3b7afc8c0626d425dc220
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
- # -*- mode: ruby; coding: utf-8 -*-
1
+ # -*- ruby -*-
2
2
  #
3
- # Copyright (C) 2012 Kouhei Sutou <kou@clear-code.com>
3
+ # Copyright (C) 2012-2026 Sutou Kouhei <kou@clear-code.com>
4
4
  #
5
5
  # This library is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the GNU Lesser General Public
@@ -19,3 +19,16 @@
19
19
  source "https://rubygems.org/"
20
20
 
21
21
  gemspec
22
+
23
+ gem "json", git: "https://github.com/ruby/json.git"
24
+
25
+ group :development do
26
+ gem "kramdown"
27
+ gem "packnga"
28
+ gem "rake"
29
+ gem "yard"
30
+ end
31
+
32
+ group :test do
33
+ gem "test-unit"
34
+ end
data/doc/text/news.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # News
2
2
 
3
+ ## 1.1.7: 2026-06-26
4
+
5
+ ### Fixes
6
+
7
+ * `load`: Removed trailing spaces in data. This was a backward
8
+ incompatible change in 1.1.6. This change restored the previous
9
+ behavior.
10
+
11
+ ## 1.1.6: 2026-06-25
12
+
13
+ ### Improvements
14
+
15
+ * Migrated to json gem from json-stream gem.
16
+
17
+ * Dropped support for Ruby 2.6.
18
+
3
19
  ## 1.1.5: 2024-12-24
4
20
 
5
21
  ### Improvements
@@ -1,6 +1,6 @@
1
1
  # -*- mode: ruby -*-
2
2
  #
3
- # Copyright (C) 2012-2024 Sutou Kouhei <kou@clear-code.com>
3
+ # Copyright (C) 2012-2026 Sutou Kouhei <kou@clear-code.com>
4
4
  #
5
5
  # This library is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the GNU Lesser General Public
@@ -53,13 +53,6 @@ Gem::Specification.new do |spec|
53
53
  spec.require_paths = ["lib"]
54
54
 
55
55
  spec.add_runtime_dependency("groonga-command", ">= 1.4.0")
56
- spec.add_runtime_dependency("json-stream")
57
-
58
- spec.add_development_dependency("test-unit")
59
- spec.add_development_dependency("rake")
60
- spec.add_development_dependency("bundler")
61
- spec.add_development_dependency("packnga")
62
- spec.add_development_dependency("yard")
63
- spec.add_development_dependency("kramdown")
56
+ spec.add_runtime_dependency("json", ">= 2.20.0")
64
57
  end
65
58
 
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015-2016 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2015-2026 Sutou Kouhei <kou@clear-code.com>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -14,7 +14,7 @@
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
- require "json/stream"
17
+ require "json"
18
18
 
19
19
  module Groonga
20
20
  module Command
@@ -24,35 +24,44 @@ module Groonga
24
24
  attr_writer :on_consumed
25
25
  attr_writer :on_end
26
26
  def initialize
27
- initialize_parser
27
+ @parser = JSON::ResumableParser.new
28
28
  @on_value = nil
29
29
  @on_consumed = nil
30
30
  @on_end = nil
31
- @containers = []
32
- @keys = []
31
+ @n_processed_values = 0
33
32
  end
34
33
 
35
34
  def <<(data)
36
35
  data_size = data.bytesize
37
36
  return self if data_size.zero?
38
37
 
39
- before_pos = @parser.pos
40
- status = catch do |tag|
41
- @tag = tag
42
- begin
43
- @parser << data
44
- rescue JSON::Stream::ParserError => error
45
- pos = @parser.pos
46
- consumed = pos - before_pos - 1
47
- raise Error.new(error.message,
48
- data[0, consumed],
49
- data[consumed..-1])
38
+ @parser << data
39
+ begin
40
+ done = @parser.parse
41
+ rescue JSON::ParserError => error
42
+ consumed = data_size - @parser.rest.bytesize
43
+ raise Error.new(error.message,
44
+ data[0, consumed],
45
+ data[consumed..-1])
46
+ end
47
+
48
+ if done
49
+ @parser.value[@n_processed_values..-1].each do |value|
50
+ @on_value.call(value)
51
+ end
52
+ @n_processed_values = 0
53
+ else
54
+ partial_value = @parser.partial_value
55
+ if partial_value
56
+ partial_value[@n_processed_values..-2].each do |value|
57
+ @on_value.call(value)
58
+ end
59
+ @n_processed_values = partial_value.size - 1
50
60
  end
51
- :continue
52
61
  end
53
62
 
54
- pos = @parser.pos
55
- consumed = pos - before_pos
63
+ consumed = data.bytesize
64
+ consumed -= @parser.rest.bytesize if done
56
65
  if consumed > 0
57
66
  if consumed < data_size
58
67
  @on_consumed.call(data[0, consumed])
@@ -60,7 +69,8 @@ module Groonga
60
69
  @on_consumed.call(data)
61
70
  end
62
71
  end
63
- if status == :done
72
+
73
+ if done
64
74
  if consumed < data_size
65
75
  @on_end.call(data[consumed..-1])
66
76
  else
@@ -70,60 +80,6 @@ module Groonga
70
80
 
71
81
  self
72
82
  end
73
-
74
- private
75
- def initialize_parser
76
- @parser = JSON::Stream::Parser.new
77
- @parser.singleton_class.__send__(:attr_reader, :pos)
78
- @parser.end_document do
79
- throw(@tag, :done)
80
- end
81
- @parser.start_object do
82
- push_container({})
83
- end
84
- @parser.end_object do
85
- pop_container
86
- end
87
- @parser.start_array do
88
- push_container([])
89
- end
90
- @parser.end_array do
91
- pop_container
92
- end
93
- @parser.key do |key|
94
- push_key(key)
95
- end
96
- @parser.value do |value|
97
- push_value(value)
98
- end
99
- end
100
-
101
- def push_container(container)
102
- @containers.push(container)
103
- end
104
-
105
- def pop_container
106
- container = @containers.pop
107
- if @containers.size == 1
108
- @on_value.call(container)
109
- else
110
- push_value(container)
111
- end
112
- end
113
-
114
- def push_key(key)
115
- @keys.push(key)
116
- end
117
-
118
- def push_value(value)
119
- container = @containers.last
120
- case container
121
- when ::Hash
122
- container[@keys.pop] = value
123
- when ::Array
124
- container.push(value)
125
- end
126
- end
127
83
  end
128
84
  end
129
85
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2013-2017 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2013-2026 Sutou Kouhei <kou@clear-code.com>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -17,7 +17,7 @@
17
17
  module Groonga
18
18
  module Command
19
19
  class Parser
20
- VERSION = "1.1.5"
20
+ VERSION = "1.1.7"
21
21
  end
22
22
  end
23
23
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2011-2024 Sutou Kouhei <kou@clear-code.com>
1
+ # Copyright (C) 2011-2026 Sutou Kouhei <kou@clear-code.com>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -15,7 +15,13 @@
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
17
  require "English"
18
- require "cgi"
18
+ require "cgi/escape"
19
+ begin
20
+ CGI.unescape("")
21
+ rescue NameError
22
+ # Ruby < 4.0 need cgi for CGI.unescape.
23
+ require "cgi"
24
+ end
19
25
  require "json"
20
26
 
21
27
  require "groonga/command"
@@ -381,6 +387,7 @@ module Groonga
381
387
  end
382
388
  @load_values_parser.on_end = lambda do |rest|
383
389
  loading = @loading
390
+ @command.original_source.rstrip! if @need_original_source
384
391
  on_load_complete(@command)
385
392
  reset
386
393
  @buffer << rest if loading and rest
@@ -1,6 +1,4 @@
1
- # -*- coding: utf-8 -*-
2
- #
3
- # Copyright (C) 2011-2013 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2011-2026 Sutou Kouhei <kou@clear-code.com>
4
2
  #
5
3
  # This library is free software; you can redistribute it and/or
6
4
  # modify it under the terms of the GNU Lesser General Public
@@ -16,7 +14,7 @@
16
14
  # License along with this library; if not, write to the Free Software
17
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18
16
 
19
- require "cgi"
17
+ require "cgi/escape"
20
18
  require "stringio"
21
19
 
22
20
  require "groonga/command/parser"
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2015-2026 Sutou Kouhei <kou@clear-code.com>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -155,6 +155,7 @@ class LoadValuesParserTest < Test::Unit::TestCase
155
155
 
156
156
  sub_test_case "error" do
157
157
  test "unfinished" do
158
+ omit("We can't implement this with JSON::ResumableParser")
158
159
  assert_equal([
159
160
  {
160
161
  "object" => {
data/test/test-parser.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2011-2016 Kouhei Sutou <kou@clear-code.com>
1
+ # Copyright (C) 2011-2026 Sutou Kouhei <kou@clear-code.com>
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -412,6 +412,7 @@ load --table Users
412
412
  expected_events << [:load_value, <<-SOURCE, value]
413
413
  load --table Users
414
414
  [
415
+ {"_key": "alice", "name": "Alice"}
415
416
  SOURCE
416
417
  expected_events << [:load_complete, <<-SOURCE.chomp]
417
418
  load --table Users
@@ -427,6 +428,7 @@ load --table Users
427
428
  expected_events << [:load_value, <<-SOURCE, value]
428
429
  load --table Users
429
430
  [
431
+ {"_key": "bob", "name": "Bob"}
430
432
  SOURCE
431
433
  expected_events << [:load_complete, <<-SOURCE.chomp]
432
434
  load --table Users
@@ -453,7 +455,7 @@ EOS
453
455
  end
454
456
 
455
457
  def test_no_record_separate_comma
456
- message = "Expected comma or object or array close: char 37"
458
+ message = "expected ',' or ']' after array value"
457
459
  before = <<-BEFORE
458
460
  [
459
461
  {"_key": "alice", "name": "Alice"}
@@ -473,7 +475,7 @@ EOC
473
475
  end
474
476
 
475
477
  def test_garbage_before_json
476
- message = "Expected value: char 0"
478
+ message = "unexpected character: 'XXX'"
477
479
  before = ""
478
480
  after = <<-AFTER
479
481
  XXX
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: groonga-command-parser
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-24 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: groonga-command
@@ -25,103 +24,19 @@ dependencies:
25
24
  - !ruby/object:Gem::Version
26
25
  version: 1.4.0
27
26
  - !ruby/object:Gem::Dependency
28
- name: json-stream
27
+ name: json
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
30
  - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '0'
32
+ version: 2.20.0
34
33
  type: :runtime
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
37
  - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: test-unit
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: bundler
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: packnga
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: yard
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: kramdown
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
39
+ version: 2.20.0
125
40
  description: ''
126
41
  email:
127
42
  - kou@clear-code.com
@@ -159,7 +74,6 @@ homepage: https://github.com/groonga/groonga-command-parser
159
74
  licenses:
160
75
  - LGPLv2.1+
161
76
  metadata: {}
162
- post_install_message:
163
77
  rdoc_options: []
164
78
  require_paths:
165
79
  - lib
@@ -174,8 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
174
88
  - !ruby/object:Gem::Version
175
89
  version: '0'
176
90
  requirements: []
177
- rubygems_version: 3.5.22
178
- signing_key:
91
+ rubygems_version: 4.0.10
179
92
  specification_version: 4
180
93
  summary: Groonga-command-parser is a Ruby library to parses [groonga](http://groonga.org/)'s
181
94
  command syntax. You can write a program to process groonga's command by using groonga-command-parser.