msgpack 1.6.0 → 1.7.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +25 -0
  3. data/README.md +27 -0
  4. data/ext/java/org/msgpack/jruby/Buffer.java +3 -3
  5. data/ext/java/org/msgpack/jruby/ExtensionRegistry.java +11 -20
  6. data/ext/java/org/msgpack/jruby/ExtensionValue.java +1 -1
  7. data/ext/java/org/msgpack/jruby/Factory.java +11 -50
  8. data/ext/java/org/msgpack/jruby/Packer.java +9 -24
  9. data/ext/java/org/msgpack/jruby/Unpacker.java +15 -32
  10. data/ext/msgpack/buffer.c +16 -17
  11. data/ext/msgpack/buffer.h +2 -8
  12. data/ext/msgpack/buffer_class.c +76 -5
  13. data/ext/msgpack/buffer_class.h +1 -0
  14. data/ext/msgpack/extconf.rb +18 -26
  15. data/ext/msgpack/factory_class.c +27 -61
  16. data/ext/msgpack/packer.c +13 -14
  17. data/ext/msgpack/packer.h +0 -4
  18. data/ext/msgpack/packer_class.c +19 -54
  19. data/ext/msgpack/packer_ext_registry.c +31 -28
  20. data/ext/msgpack/packer_ext_registry.h +10 -14
  21. data/ext/msgpack/rbinit.c +1 -1
  22. data/ext/msgpack/rmem.c +3 -4
  23. data/ext/msgpack/unpacker.c +12 -25
  24. data/ext/msgpack/unpacker.h +0 -4
  25. data/ext/msgpack/unpacker_class.c +14 -49
  26. data/ext/msgpack/unpacker_ext_registry.c +4 -16
  27. data/ext/msgpack/unpacker_ext_registry.h +3 -7
  28. data/lib/msgpack/buffer.rb +9 -0
  29. data/lib/msgpack/factory.rb +90 -63
  30. data/lib/msgpack/packer.rb +10 -1
  31. data/lib/msgpack/unpacker.rb +14 -1
  32. data/lib/msgpack/version.rb +1 -1
  33. data/lib/msgpack.rb +1 -0
  34. data/msgpack.gemspec +6 -3
  35. metadata +19 -48
  36. data/.github/workflows/ci.yaml +0 -57
  37. data/.gitignore +0 -23
  38. data/.rubocop.yml +0 -36
  39. data/Gemfile +0 -9
  40. data/Rakefile +0 -70
  41. data/appveyor.yml +0 -18
  42. data/bench/bench.rb +0 -78
  43. data/bin/console +0 -8
  44. data/doclib/msgpack/buffer.rb +0 -193
  45. data/doclib/msgpack/core_ext.rb +0 -101
  46. data/doclib/msgpack/error.rb +0 -19
  47. data/doclib/msgpack/extension_value.rb +0 -9
  48. data/doclib/msgpack/factory.rb +0 -145
  49. data/doclib/msgpack/packer.rb +0 -209
  50. data/doclib/msgpack/time.rb +0 -22
  51. data/doclib/msgpack/timestamp.rb +0 -44
  52. data/doclib/msgpack/unpacker.rb +0 -183
  53. data/doclib/msgpack.rb +0 -87
  54. data/msgpack.org.md +0 -46
  55. data/spec/bigint_spec.rb +0 -26
  56. data/spec/cases.json +0 -1
  57. data/spec/cases.msg +0 -0
  58. data/spec/cases_compact.msg +0 -0
  59. data/spec/cases_spec.rb +0 -39
  60. data/spec/cruby/buffer_io_spec.rb +0 -255
  61. data/spec/cruby/buffer_packer.rb +0 -29
  62. data/spec/cruby/buffer_spec.rb +0 -592
  63. data/spec/cruby/buffer_unpacker.rb +0 -19
  64. data/spec/cruby/unpacker_spec.rb +0 -70
  65. data/spec/ext_value_spec.rb +0 -99
  66. data/spec/exttypes.rb +0 -51
  67. data/spec/factory_spec.rb +0 -706
  68. data/spec/format_spec.rb +0 -301
  69. data/spec/jruby/benchmarks/shootout_bm.rb +0 -73
  70. data/spec/jruby/benchmarks/symbolize_keys_bm.rb +0 -25
  71. data/spec/jruby/unpacker_spec.rb +0 -186
  72. data/spec/msgpack_spec.rb +0 -214
  73. data/spec/pack_spec.rb +0 -61
  74. data/spec/packer_spec.rb +0 -575
  75. data/spec/random_compat.rb +0 -24
  76. data/spec/spec_helper.rb +0 -72
  77. data/spec/timestamp_spec.rb +0 -159
  78. data/spec/unpack_spec.rb +0 -57
  79. data/spec/unpacker_spec.rb +0 -869
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: msgpack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sadayuki Furuhashi
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2022-09-30 00:00:00.000000000 Z
13
+ date: 2023-07-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler
@@ -68,6 +68,20 @@ dependencies:
68
68
  - - "~>"
69
69
  - !ruby/object:Gem::Version
70
70
  version: '3.3'
71
+ - !ruby/object:Gem::Dependency
72
+ name: ruby_memcheck
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
71
85
  - !ruby/object:Gem::Dependency
72
86
  name: yard
73
87
  requirement: !ruby/object:Gem::Requirement
@@ -122,27 +136,9 @@ extensions:
122
136
  - ext/msgpack/extconf.rb
123
137
  extra_rdoc_files: []
124
138
  files:
125
- - ".github/workflows/ci.yaml"
126
- - ".gitignore"
127
- - ".rubocop.yml"
128
139
  - ChangeLog
129
- - Gemfile
130
140
  - LICENSE
131
141
  - README.md
132
- - Rakefile
133
- - appveyor.yml
134
- - bench/bench.rb
135
- - bin/console
136
- - doclib/msgpack.rb
137
- - doclib/msgpack/buffer.rb
138
- - doclib/msgpack/core_ext.rb
139
- - doclib/msgpack/error.rb
140
- - doclib/msgpack/extension_value.rb
141
- - doclib/msgpack/factory.rb
142
- - doclib/msgpack/packer.rb
143
- - doclib/msgpack/time.rb
144
- - doclib/msgpack/timestamp.rb
145
- - doclib/msgpack/unpacker.rb
146
142
  - ext/java/org/msgpack/jruby/Buffer.java
147
143
  - ext/java/org/msgpack/jruby/Decoder.java
148
144
  - ext/java/org/msgpack/jruby/Encoder.java
@@ -183,6 +179,7 @@ files:
183
179
  - ext/msgpack/unpacker_ext_registry.h
184
180
  - lib/msgpack.rb
185
181
  - lib/msgpack/bigint.rb
182
+ - lib/msgpack/buffer.rb
186
183
  - lib/msgpack/core_ext.rb
187
184
  - lib/msgpack/factory.rb
188
185
  - lib/msgpack/packer.rb
@@ -192,32 +189,6 @@ files:
192
189
  - lib/msgpack/unpacker.rb
193
190
  - lib/msgpack/version.rb
194
191
  - msgpack.gemspec
195
- - msgpack.org.md
196
- - spec/bigint_spec.rb
197
- - spec/cases.json
198
- - spec/cases.msg
199
- - spec/cases_compact.msg
200
- - spec/cases_spec.rb
201
- - spec/cruby/buffer_io_spec.rb
202
- - spec/cruby/buffer_packer.rb
203
- - spec/cruby/buffer_spec.rb
204
- - spec/cruby/buffer_unpacker.rb
205
- - spec/cruby/unpacker_spec.rb
206
- - spec/ext_value_spec.rb
207
- - spec/exttypes.rb
208
- - spec/factory_spec.rb
209
- - spec/format_spec.rb
210
- - spec/jruby/benchmarks/shootout_bm.rb
211
- - spec/jruby/benchmarks/symbolize_keys_bm.rb
212
- - spec/jruby/unpacker_spec.rb
213
- - spec/msgpack_spec.rb
214
- - spec/pack_spec.rb
215
- - spec/packer_spec.rb
216
- - spec/random_compat.rb
217
- - spec/spec_helper.rb
218
- - spec/timestamp_spec.rb
219
- - spec/unpack_spec.rb
220
- - spec/unpacker_spec.rb
221
192
  homepage: http://msgpack.org/
222
193
  licenses:
223
194
  - Apache 2.0
@@ -230,14 +201,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
230
201
  requirements:
231
202
  - - ">="
232
203
  - !ruby/object:Gem::Version
233
- version: '2.4'
204
+ version: '2.5'
234
205
  required_rubygems_version: !ruby/object:Gem::Requirement
235
206
  requirements:
236
207
  - - ">="
237
208
  - !ruby/object:Gem::Version
238
209
  version: '0'
239
210
  requirements: []
240
- rubygems_version: 3.1.2
211
+ rubygems_version: 3.3.7
241
212
  signing_key:
242
213
  specification_version: 4
243
214
  summary: MessagePack, a binary-based efficient data interchange format.
@@ -1,57 +0,0 @@
1
- name: ci
2
-
3
- on:
4
- pull_request:
5
- branches: '*'
6
- push:
7
- branches:
8
- - master
9
- - main
10
- - 'release-*'
11
-
12
- jobs:
13
- mri:
14
- strategy:
15
- fail-fast: false
16
- matrix:
17
- os: [ubuntu, macos, windows]
18
- ruby: ['2.4', '2.5', '2.6', '2.7', '3.0', '3.1']
19
- runs-on: ${{ matrix.os }}-latest
20
- steps:
21
- - uses: actions/checkout@v2
22
- - uses: ruby/setup-ruby@v1
23
- with:
24
- ruby-version: ${{ matrix.ruby }}
25
- bundler-cache: true # 'bundle install' and cache
26
- - run: bundle exec rake
27
-
28
- other:
29
- strategy:
30
- fail-fast: false
31
- matrix:
32
- os: [ubuntu]
33
- ruby: ['jruby-9.2.19.0', 'jruby-9.3.3.0', 'truffleruby']
34
- runs-on: ${{ matrix.os }}-latest
35
- steps:
36
- - uses: actions/checkout@v2
37
- - uses: ruby/setup-ruby@v1
38
- with:
39
- ruby-version: ${{ matrix.ruby }}
40
- bundler-cache: true # 'bundle install' and cache
41
- - run: bundle exec rake spec
42
-
43
- head-versions:
44
- continue-on-error: true
45
- strategy:
46
- fail-fast: false
47
- matrix:
48
- os: [ubuntu]
49
- ruby: ['ruby-head', 'jruby-head']
50
- runs-on: ${{ matrix.os }}-latest
51
- steps:
52
- - uses: actions/checkout@v2
53
- - uses: ruby/setup-ruby@v1
54
- with:
55
- ruby-version: ${{ matrix.ruby }}
56
- bundler-cache: true # 'bundle install' and cache
57
- - run: bundle exec rake spec || echo "failed, but ignore it"
data/.gitignore DELETED
@@ -1,23 +0,0 @@
1
- *.o
2
- *.so
3
- *.bundle
4
- *.gem
5
- *.class
6
- *.jar
7
- doc
8
- .yardoc
9
- .bundle
10
- Gemfile*
11
- pkg
12
- test/debug.log
13
- *~
14
- *.swp
15
- /rdoc
16
- tmp
17
- .classpath
18
- .project
19
- .settings
20
- /nbproject/private/
21
- coverage/
22
- .idea/
23
- .ruby-version
data/.rubocop.yml DELETED
@@ -1,36 +0,0 @@
1
- # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2015-03-09 17:42:55 +0100 using RuboCop version 0.29.1.
3
- # The point is for the user to remove these configuration records
4
- # one by one as the offenses are removed from the code base.
5
- # Note that changes in the inspected code, or installation of new
6
- # versions of RuboCop, may require this file to be generated again.
7
-
8
- AllCops:
9
- TargetRubyVersion: 2.4
10
-
11
- # Offense count: 3
12
- Lint/AmbiguousOperator:
13
- Enabled: false
14
-
15
- # Offense count: 1
16
- # Configuration parameters: AllowSafeAssignment.
17
- Lint/AssignmentInCondition:
18
- Enabled: false
19
-
20
- # Offense count: 1
21
- Security/Eval:
22
- Enabled: false
23
-
24
- # Offense count: 3
25
- # Cop supports --auto-correct.
26
- Lint/UnusedBlockArgument:
27
- Enabled: false
28
-
29
- # Offense count: 35
30
- # Cop supports --auto-correct.
31
- Lint/UnusedMethodArgument:
32
- Enabled: false
33
-
34
- # Offense count: 128
35
- Lint/Void:
36
- Enabled: false
data/Gemfile DELETED
@@ -1,9 +0,0 @@
1
- source 'https://rubygems.org/'
2
-
3
- gemspec
4
-
5
- ## enable this line to run benchmarks
6
- # gem "viiite"
7
-
8
- gem "rubocop", "~> 0.82.0"
9
- gem "simplecov"
data/Rakefile DELETED
@@ -1,70 +0,0 @@
1
-
2
- require 'bundler'
3
- Bundler::GemHelper.install_tasks
4
-
5
- require 'fileutils'
6
-
7
- require 'rspec/core'
8
- require 'rspec/core/rake_task'
9
- require 'yard'
10
-
11
- task :spec => :compile
12
-
13
- desc 'Run RSpec code examples and measure coverage'
14
- task :coverage do |t|
15
- ENV['SIMPLE_COV'] = '1'
16
- Rake::Task["spec"].invoke
17
- end
18
-
19
- desc 'Generate YARD document'
20
- YARD::Rake::YardocTask.new(:doc) do |t|
21
- t.files = ['lib/msgpack/version.rb','doclib/**/*.rb']
22
- t.options = []
23
- t.options << '--debug' << '--verbose' if $trace
24
- end
25
-
26
- spec = eval File.read("msgpack.gemspec")
27
-
28
- if RUBY_PLATFORM =~ /java/
29
- require 'rake/javaextensiontask'
30
-
31
- Rake::JavaExtensionTask.new('msgpack', spec) do |ext|
32
- ext.ext_dir = 'ext/java'
33
- jruby_home = RbConfig::CONFIG['prefix']
34
- jars = ["#{jruby_home}/lib/jruby.jar"]
35
- ext.classpath = jars.map { |x| File.expand_path(x) }.join(':')
36
- ext.lib_dir = File.join(*['lib', 'msgpack', ENV['FAT_DIR']].compact)
37
- ext.release = '8'
38
- end
39
- else
40
- require 'rake/extensiontask'
41
-
42
- Rake::ExtensionTask.new('msgpack', spec) do |ext|
43
- ext.ext_dir = 'ext/msgpack'
44
- ext.cross_compile = true
45
- ext.lib_dir = File.join(*['lib', 'msgpack', ENV['FAT_DIR']].compact)
46
- # cross_platform names are of MRI's platform name
47
- ext.cross_platform = ['x86-mingw32', 'x64-mingw32']
48
- end
49
- end
50
-
51
- test_pattern = case
52
- when RUBY_PLATFORM =~ /java/ then 'spec/{,jruby/}*_spec.rb'
53
- when RUBY_ENGINE =~ /rbx/ then 'spec/*_spec.rb'
54
- else 'spec/{,cruby/}*_spec.rb' # MRI
55
- end
56
- RSpec::Core::RakeTask.new(:spec) do |t|
57
- t.rspec_opts = ["-c", "-f progress"]
58
- t.rspec_opts << "-Ilib"
59
- t.pattern = test_pattern
60
- t.verbose = true
61
- end
62
-
63
- namespace :build do
64
- desc 'Build gem for JRuby after cleaning'
65
- task :java => [:clean, :spec, :build]
66
- end
67
-
68
- CLEAN.include('lib/msgpack/msgpack.*')
69
-
70
- task :default => [:spec, :build, :doc]
data/appveyor.yml DELETED
@@ -1,18 +0,0 @@
1
- ---
2
- install:
3
- - SET PATH=C:\Ruby%ruby_version%\bin;%PATH%
4
- - ruby --version
5
- - gem --version
6
- - bundle install
7
- build: off
8
- test_script:
9
- - bundle exec rake -rdevkit
10
-
11
- environment:
12
- matrix:
13
- - ruby_version: "200"
14
- - ruby_version: "200-x64"
15
- - ruby_version: "21"
16
- - ruby_version: "21-x64"
17
- - ruby_version: "22"
18
- - ruby_version: "22-x64"
data/bench/bench.rb DELETED
@@ -1,78 +0,0 @@
1
- # % bundle install
2
- # % bundle exec ruby bench/bench.rb
3
-
4
- require 'msgpack'
5
-
6
- require 'benchmark/ips'
7
-
8
- object_plain = {
9
- 'message' => '127.0.0.1 - - [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"'
10
- }
11
-
12
- data_plain = MessagePack.pack(object_plain)
13
-
14
- object_structured = {
15
- 'remote_host' => '127.0.0.1',
16
- 'remote_user' => '-',
17
- 'date' => '10/Oct/2000:13:55:36 -0700',
18
- 'request' => 'GET /apache_pb.gif HTTP/1.0',
19
- 'method' => 'GET',
20
- 'path' => '/apache_pb.gif',
21
- 'protocol' => 'HTTP/1.0',
22
- 'status' => 200,
23
- 'bytes' => 2326,
24
- 'referer' => 'http://www.example.com/start.html',
25
- 'agent' => 'Mozilla/4.08 [en] (Win98; I ;Nav)',
26
- }
27
-
28
- data_structured = MessagePack.pack(object_structured)
29
-
30
- class Extended
31
- def to_msgpack_ext
32
- MessagePack.pack({})
33
- end
34
-
35
- def self.from_msgpack_ext(data)
36
- MessagePack.unpack(data)
37
- Extended.new
38
- end
39
- end
40
-
41
- object_extended = {
42
- 'extended' => Extended.new
43
- }
44
-
45
- extended_packer = MessagePack::Packer.new
46
- extended_packer.register_type(0x00, Extended, :to_msgpack_ext)
47
- data_extended = extended_packer.pack(object_extended).to_s
48
-
49
- Benchmark.ips do |x|
50
- x.report('pack-plain') do
51
- MessagePack.pack(object_plain)
52
- end
53
-
54
- x.report('pack-structured') do
55
- MessagePack.pack(object_structured)
56
- end
57
-
58
- x.report('pack-extended') do
59
- packer = MessagePack::Packer.new
60
- packer.register_type(0x00, Extended, :to_msgpack_ext)
61
- packer.pack(object_extended).to_s
62
- end
63
-
64
- x.report('unpack-plain') do
65
- MessagePack.unpack(data_plain)
66
- end
67
-
68
- x.report('unpack-structured') do
69
- MessagePack.unpack(data_structured)
70
- end
71
-
72
- x.report('unpack-extended') do
73
- unpacker = MessagePack::Unpacker.new
74
- unpacker.register_type(0x00, Extended, :from_msgpack_ext)
75
- unpacker.feed data_extended
76
- unpacker.read
77
- end
78
- end
data/bin/console DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require "bundler/setup"
5
- require "msgpack"
6
-
7
- require "irb"
8
- IRB.start(__FILE__)
@@ -1,193 +0,0 @@
1
- module MessagePack
2
-
3
- class Buffer
4
- #
5
- # Creates a MessagePack::Buffer instance.
6
- #
7
- # @overload initialize(options={})
8
- # @param options [Hash]
9
- #
10
- # @overload initialize(io, options={})
11
- # @param io [IO]
12
- # @param options [Hash]
13
- # This buffer writes written data into the IO when it is filled.
14
- # This buffer reads data from the IO when it is empty.
15
- #
16
- # _io_ must respond to readpartial(length, [,string]) or read(string) method and
17
- # write(string) or append(string) method.
18
- #
19
- # Supported options:
20
- #
21
- # * *:io_buffer_size* buffer size to read data from the internal IO. (default: 32768)
22
- # * *:read_reference_threshold* the threshold size to enable zero-copy deserialize optimization. Read strings longer than this threshold will refer the original string instead of copying it. (default: 256) (supported in MRI only)
23
- # * *:write_reference_threshold* the threshold size to enable zero-copy serialize optimization. The buffer refers written strings longer than this threshold instead of copying it. (default: 524288) (supported in MRI only)
24
- #
25
- def initialize(*args)
26
- end
27
-
28
- #
29
- # Makes the buffer empty
30
- #
31
- # @return nil
32
- #
33
- def clear
34
- end
35
-
36
- #
37
- # Returns byte size of the buffer.
38
- #
39
- # @return nil
40
- #
41
- def size
42
- end
43
-
44
- #
45
- # Returns _true_ if the buffer is empty.
46
- # This method is slightly faster than _size_.
47
- #
48
- # @return [Boolean]
49
- #
50
- def empty?
51
- end
52
-
53
- #
54
- # Appends the given data to the buffer.
55
- #
56
- # @param data [String]
57
- # @return [Integer] byte size written
58
- #
59
- def write(data)
60
- end
61
-
62
- #
63
- # Appends the given data to the buffer.
64
- #
65
- # @param data [String]
66
- # @return [Buffer] self
67
- #
68
- def <<(data)
69
- end
70
-
71
- #
72
- # Consumes _n_ bytes from the head of the buffer and returns consumed data.
73
- # If the size of the buffer is less than _n_, it reads all of data in the buffer.
74
- #
75
- # If _n_ is 0, it does nothing and returns an empty string.
76
- # If the optional _buffer_ argument is given, the content of the string will be replaced with the consumed data.
77
- #
78
- # @overload read
79
- #
80
- # @overload read(n)
81
- # @param n [Integer] bytes to read
82
- #
83
- # @overload read(n, buffer)
84
- # @param n [Integer] bytes to read
85
- # @param buffer [String] buffer to read into
86
- #
87
- # @return [String]
88
- #
89
- def read(n)
90
- end
91
-
92
- #
93
- # Consumes _n_ bytes from the head of the buffer and returns consumed data.
94
- # If the size of the buffer is less than _n_, it does nothing and raises EOFError.
95
- #
96
- # If _n_ is 0, it does nothing and returns an empty string.
97
- # If the optional _buffer_ argument is given, the content of the string will be replaced with the consumed data.
98
- #
99
- # @overload read_all
100
- #
101
- # @overload read_all(n)
102
- # @param n [Integer] bytes to read
103
- #
104
- # @overload read_all(n, buffer)
105
- # @param n [Integer] bytes to read
106
- # @param buffer [String] buffer to read into
107
- #
108
- # @return [String]
109
- #
110
- def read_all(n, buffer=nil)
111
- end
112
-
113
- #
114
- # Consumes _n_ bytes from the head of the buffer.
115
- # If the size of the buffer is less than _n_, it skips all of data in the buffer and returns integer less than _n_.
116
- #
117
- # If _n_ is 0, it does nothing and returns _0_.
118
- #
119
- # @param n [Integer] byte size to skip
120
- # @return [Integer] byte size actually skipped
121
- #
122
- def skip(n)
123
- end
124
-
125
- #
126
- # Consumes _n_ bytes from the head of the buffer.
127
- # If the size of the buffer is less than _n_, it does nothing and raises EOFError.
128
- # If _n_ is 0, it does nothing.
129
- #
130
- # @param n [Integer] byte size to skip
131
- # @return [Buffer] self
132
- #
133
- def skip_all(n)
134
- end
135
-
136
- #
137
- # Returns all data in the buffer as a string.
138
- # Destructive update to the returned string does NOT effect the buffer.
139
- #
140
- # @return [String]
141
- #
142
- def to_str
143
- end
144
-
145
- #
146
- # Returns content of the buffer as an array of strings.
147
- #
148
- # This method is sometimes faster than to_s because the internal
149
- # structure of the buffer is a queue of buffer chunks.
150
- #
151
- # @return [Array] array of strings
152
- #
153
- def to_a
154
- end
155
-
156
- #
157
- # Internal io
158
- #
159
- # @return IO
160
- #
161
- attr_reader :io
162
-
163
- #
164
- # Flushes data in the internal buffer to the internal IO.
165
- # If internal IO is not set, it does nothing.
166
- #
167
- # @return [Buffer] self
168
- #
169
- def flush
170
- end
171
-
172
- #
173
- # Closes internal IO if its set.
174
- # If internal IO is not set, it does nothing
175
- #
176
- # @return nil
177
- #
178
- def close
179
- end
180
-
181
- #
182
- # Writes all of data in the internal buffer into the given IO.
183
- # This method consumes and removes data from the internal buffer.
184
- # _io_ must respond to write(data) method.
185
- #
186
- # @param io [IO]
187
- # @return [Integer] byte size of written data
188
- #
189
- def write_to(io)
190
- end
191
- end
192
-
193
- end