messagepack 1.0.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 +7 -0
- data/README.adoc +773 -0
- data/Rakefile +8 -0
- data/docs/Gemfile +7 -0
- data/docs/README.md +85 -0
- data/docs/_config.yml +137 -0
- data/docs/_guides/index.adoc +14 -0
- data/docs/_guides/io-streaming.adoc +226 -0
- data/docs/_guides/migration.adoc +218 -0
- data/docs/_guides/performance.adoc +189 -0
- data/docs/_pages/buffer.adoc +85 -0
- data/docs/_pages/extension-types.adoc +117 -0
- data/docs/_pages/factory-pattern.adoc +115 -0
- data/docs/_pages/index.adoc +20 -0
- data/docs/_pages/serialization.adoc +159 -0
- data/docs/_pages/streaming.adoc +97 -0
- data/docs/_pages/symbol-extension.adoc +69 -0
- data/docs/_pages/timestamp-extension.adoc +88 -0
- data/docs/_references/api.adoc +360 -0
- data/docs/_references/extensions.adoc +198 -0
- data/docs/_references/format.adoc +301 -0
- data/docs/_references/index.adoc +14 -0
- data/docs/_tutorials/extension-types.adoc +170 -0
- data/docs/_tutorials/getting-started.adoc +165 -0
- data/docs/_tutorials/index.adoc +14 -0
- data/docs/_tutorials/thread-safety.adoc +157 -0
- data/docs/index.adoc +77 -0
- data/docs/lychee.toml +42 -0
- data/lib/messagepack/bigint.rb +131 -0
- data/lib/messagepack/buffer.rb +534 -0
- data/lib/messagepack/core_ext.rb +34 -0
- data/lib/messagepack/error.rb +24 -0
- data/lib/messagepack/extensions/base.rb +55 -0
- data/lib/messagepack/extensions/registry.rb +154 -0
- data/lib/messagepack/extensions/symbol.rb +38 -0
- data/lib/messagepack/extensions/timestamp.rb +110 -0
- data/lib/messagepack/extensions/value.rb +38 -0
- data/lib/messagepack/factory.rb +349 -0
- data/lib/messagepack/format.rb +99 -0
- data/lib/messagepack/packer.rb +702 -0
- data/lib/messagepack/symbol.rb +4 -0
- data/lib/messagepack/time.rb +29 -0
- data/lib/messagepack/timestamp.rb +4 -0
- data/lib/messagepack/unpacker.rb +1418 -0
- data/lib/messagepack/version.rb +5 -0
- data/lib/messagepack.rb +81 -0
- metadata +94 -0
data/lib/messagepack.rb
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'messagepack/version'
|
|
4
|
+
require_relative 'messagepack/error'
|
|
5
|
+
require_relative 'messagepack/format'
|
|
6
|
+
require_relative 'messagepack/buffer'
|
|
7
|
+
require_relative 'messagepack/packer'
|
|
8
|
+
require_relative 'messagepack/unpacker'
|
|
9
|
+
require_relative 'messagepack/factory'
|
|
10
|
+
require_relative 'messagepack/bigint'
|
|
11
|
+
require_relative 'messagepack/extensions/base'
|
|
12
|
+
require_relative 'messagepack/extensions/registry'
|
|
13
|
+
require_relative 'messagepack/extensions/value'
|
|
14
|
+
require_relative 'messagepack/extensions/timestamp'
|
|
15
|
+
require_relative 'messagepack/time'
|
|
16
|
+
require_relative 'messagepack/symbol'
|
|
17
|
+
require_relative 'messagepack/core_ext'
|
|
18
|
+
|
|
19
|
+
# MessagePack - Efficient binary serialization format
|
|
20
|
+
#
|
|
21
|
+
# This is a pure Ruby implementation of the MessagePack specification.
|
|
22
|
+
# See https://msgpack.org/ for more information.
|
|
23
|
+
#
|
|
24
|
+
module Messagepack
|
|
25
|
+
# Buffer class alias for backward compatibility
|
|
26
|
+
Buffer = BinaryBuffer
|
|
27
|
+
|
|
28
|
+
DefaultFactory = Factory.new
|
|
29
|
+
|
|
30
|
+
# Register built-in extension types
|
|
31
|
+
|
|
32
|
+
# Timestamp extension (-1) for Time class
|
|
33
|
+
DefaultFactory.register_type(-1, ::Time,
|
|
34
|
+
packer: ->(time) { Timestamp.to_msgpack_ext(time.tv_sec, time.tv_nsec) },
|
|
35
|
+
unpacker: ->(data) {
|
|
36
|
+
tv = Timestamp.from_msgpack_ext(data)
|
|
37
|
+
::Time.at(tv.sec, tv.nsec, :nanosecond)
|
|
38
|
+
}
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
# Timestamp extension (-1) for Timestamp class
|
|
42
|
+
DefaultFactory.register_type(-1, Timestamp,
|
|
43
|
+
packer: :to_msgpack_ext,
|
|
44
|
+
unpacker: :from_msgpack_ext
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
# Module-level convenience methods
|
|
48
|
+
|
|
49
|
+
# Serialize an object to MessagePack binary.
|
|
50
|
+
#
|
|
51
|
+
# @param object Object to serialize
|
|
52
|
+
# @param io [IO] Optional IO to write to
|
|
53
|
+
# @param options [Hash] Options to pass to Packer
|
|
54
|
+
# @return [String, nil] Binary string if io is nil
|
|
55
|
+
#
|
|
56
|
+
def self.pack(object, *args)
|
|
57
|
+
io = args.first if args.first.respond_to?(:write)
|
|
58
|
+
options = args.last if args.last.is_a?(Hash)
|
|
59
|
+
DefaultFactory.pack(object, io, **(options || {}))
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Deserialize MessagePack binary to Ruby object.
|
|
63
|
+
#
|
|
64
|
+
# @param data [String, IO] Binary data or IO to read from
|
|
65
|
+
# @param options [Hash] Options to pass to Unpacker
|
|
66
|
+
# @return [Object] Deserialized object
|
|
67
|
+
#
|
|
68
|
+
def self.unpack(data, options = nil)
|
|
69
|
+
DefaultFactory.unpack(data, **(options || {}))
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Alias for pack.
|
|
73
|
+
def self.dump(object, *args)
|
|
74
|
+
pack(object, *args)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Alias for unpack.
|
|
78
|
+
def self.load(data, options = nil)
|
|
79
|
+
unpack(data, options)
|
|
80
|
+
end
|
|
81
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: messagepack
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Ribose Inc.
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: exe
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2026-02-04 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
13
|
+
description: |-
|
|
14
|
+
MessagePack Ruby is a pure Ruby implementation of the MessagePack binary
|
|
15
|
+
serialization format. MessagePack is an efficient binary serialization format that
|
|
16
|
+
enables exchange of data among multiple languages like JSON, but is faster and smaller.
|
|
17
|
+
email:
|
|
18
|
+
- open.source@ribose.com
|
|
19
|
+
executables: []
|
|
20
|
+
extensions: []
|
|
21
|
+
extra_rdoc_files: []
|
|
22
|
+
files:
|
|
23
|
+
- README.adoc
|
|
24
|
+
- Rakefile
|
|
25
|
+
- docs/Gemfile
|
|
26
|
+
- docs/README.md
|
|
27
|
+
- docs/_config.yml
|
|
28
|
+
- docs/_guides/index.adoc
|
|
29
|
+
- docs/_guides/io-streaming.adoc
|
|
30
|
+
- docs/_guides/migration.adoc
|
|
31
|
+
- docs/_guides/performance.adoc
|
|
32
|
+
- docs/_pages/buffer.adoc
|
|
33
|
+
- docs/_pages/extension-types.adoc
|
|
34
|
+
- docs/_pages/factory-pattern.adoc
|
|
35
|
+
- docs/_pages/index.adoc
|
|
36
|
+
- docs/_pages/serialization.adoc
|
|
37
|
+
- docs/_pages/streaming.adoc
|
|
38
|
+
- docs/_pages/symbol-extension.adoc
|
|
39
|
+
- docs/_pages/timestamp-extension.adoc
|
|
40
|
+
- docs/_references/api.adoc
|
|
41
|
+
- docs/_references/extensions.adoc
|
|
42
|
+
- docs/_references/format.adoc
|
|
43
|
+
- docs/_references/index.adoc
|
|
44
|
+
- docs/_tutorials/extension-types.adoc
|
|
45
|
+
- docs/_tutorials/getting-started.adoc
|
|
46
|
+
- docs/_tutorials/index.adoc
|
|
47
|
+
- docs/_tutorials/thread-safety.adoc
|
|
48
|
+
- docs/index.adoc
|
|
49
|
+
- docs/lychee.toml
|
|
50
|
+
- lib/messagepack.rb
|
|
51
|
+
- lib/messagepack/bigint.rb
|
|
52
|
+
- lib/messagepack/buffer.rb
|
|
53
|
+
- lib/messagepack/core_ext.rb
|
|
54
|
+
- lib/messagepack/error.rb
|
|
55
|
+
- lib/messagepack/extensions/base.rb
|
|
56
|
+
- lib/messagepack/extensions/registry.rb
|
|
57
|
+
- lib/messagepack/extensions/symbol.rb
|
|
58
|
+
- lib/messagepack/extensions/timestamp.rb
|
|
59
|
+
- lib/messagepack/extensions/value.rb
|
|
60
|
+
- lib/messagepack/factory.rb
|
|
61
|
+
- lib/messagepack/format.rb
|
|
62
|
+
- lib/messagepack/packer.rb
|
|
63
|
+
- lib/messagepack/symbol.rb
|
|
64
|
+
- lib/messagepack/time.rb
|
|
65
|
+
- lib/messagepack/timestamp.rb
|
|
66
|
+
- lib/messagepack/unpacker.rb
|
|
67
|
+
- lib/messagepack/version.rb
|
|
68
|
+
homepage: https://github.com/lutaml/messagepack
|
|
69
|
+
licenses:
|
|
70
|
+
- MIT
|
|
71
|
+
metadata:
|
|
72
|
+
homepage_uri: https://github.com/lutaml/messagepack
|
|
73
|
+
source_code_uri: https://github.com/lutaml/messagepack
|
|
74
|
+
changelog_uri: https://github.com/lutaml/messagepack
|
|
75
|
+
post_install_message:
|
|
76
|
+
rdoc_options: []
|
|
77
|
+
require_paths:
|
|
78
|
+
- lib
|
|
79
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
80
|
+
requirements:
|
|
81
|
+
- - ">="
|
|
82
|
+
- !ruby/object:Gem::Version
|
|
83
|
+
version: 2.7.0
|
|
84
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '0'
|
|
89
|
+
requirements: []
|
|
90
|
+
rubygems_version: 3.5.22
|
|
91
|
+
signing_key:
|
|
92
|
+
specification_version: 4
|
|
93
|
+
summary: Pure Ruby implementation of the MessagePack binary serialization format
|
|
94
|
+
test_files: []
|