bencode 0.8.1 → 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 +5 -5
- data/README.md +1 -0
- data/bencode.gemspec +2 -2
- data/lib/bencode/decode.rb +3 -1
- data/lib/bencode/parser.rb +4 -3
- data/lib/bencode.rb +1 -1
- data/test/decoding_test.rb +4 -0
- metadata +17 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3df918cce71dce118a46f227cc80ba6b72e99b37b6ac3765786a2ce3946320d5
|
4
|
+
data.tar.gz: ec14358f50516721c80a71ea31d28a66c1fa576eb683b09e79239d60fa4d9c00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90e126ffca4d28f53c874260c596c91c13fd6d51195e6d1fc9027dbdcdb49e9917899152307a78aff72d45caf611551d77ba2c7fe505878e5e49f7ffaf475e28
|
7
|
+
data.tar.gz: b975f17c141d32da9eedce9788badd6b5155ccfc875e2ddc7a541fb22a77ded9df59906684a38d2cea76aac4fd1ecd53ff84e3392d569b80cfaf90bc78ed292f
|
data/README.md
CHANGED
data/bencode.gemspec
CHANGED
@@ -7,8 +7,8 @@ Gem::Specification.new do |s|
|
|
7
7
|
## If your rubyforge_project name is different, then edit it and comment out
|
8
8
|
## the sub! line in the Rakefile
|
9
9
|
s.name = 'bencode'
|
10
|
-
s.version = '0.
|
11
|
-
s.date = '
|
10
|
+
s.version = '1.0.0'
|
11
|
+
s.date = '2024-08-12'
|
12
12
|
|
13
13
|
s.summary = "Encode and decode bencoded data"
|
14
14
|
s.description = "A simple encoder and decoder for the BitTorrent serialization format."
|
data/lib/bencode/decode.rb
CHANGED
data/lib/bencode/parser.rb
CHANGED
@@ -2,7 +2,7 @@ require 'stringio'
|
|
2
2
|
|
3
3
|
module BEncode
|
4
4
|
class Parser
|
5
|
-
attr_reader :stream
|
5
|
+
attr_reader :stream, :encoding
|
6
6
|
|
7
7
|
def initialize(stream)
|
8
8
|
@stream =
|
@@ -13,6 +13,7 @@ module BEncode
|
|
13
13
|
elsif stream.respond_to? :to_s
|
14
14
|
StringIO.new stream.to_s
|
15
15
|
end
|
16
|
+
@encoding = @stream.external_encoding || Encoding::default_external
|
16
17
|
end
|
17
18
|
|
18
19
|
def parse!
|
@@ -50,7 +51,7 @@ module BEncode
|
|
50
51
|
until peek == ?e
|
51
52
|
key = parse!
|
52
53
|
|
53
|
-
unless key.is_a? String or key.is_a?
|
54
|
+
unless key.is_a? String or key.is_a? Integer
|
54
55
|
raise BEncode::DecodeError, "key must be a string or number"
|
55
56
|
end
|
56
57
|
|
@@ -69,7 +70,7 @@ module BEncode
|
|
69
70
|
begin
|
70
71
|
length = num.chop.to_i
|
71
72
|
return "" if length == 0 # Workaround for Rubinius bug
|
72
|
-
str = stream.read(length)
|
73
|
+
str = stream.read(length).force_encoding(encoding)
|
73
74
|
rescue
|
74
75
|
raise BEncode::DecodeError, "invalid string length"
|
75
76
|
end
|
data/lib/bencode.rb
CHANGED
data/test/decoding_test.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
require 'environment'
|
2
3
|
|
3
4
|
describe "decoding" do
|
@@ -14,4 +15,7 @@ describe "decoding" do
|
|
14
15
|
it_should_decode hsh, "d3:foo3:bar3:baz3:quxe"
|
15
16
|
|
16
17
|
it_should_decode 42, "i42eBOGUS", :ignore_trailing_junk => true
|
18
|
+
|
19
|
+
it_should_decode "café", "5:café"
|
20
|
+
it_should_decode ["你好", "中文"], "l6:你好6:中文e"
|
17
21
|
end
|
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bencode
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Schierbeck
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdoc
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: shoulda
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
description: A simple encoder and decoder for the BitTorrent serialization format.
|
@@ -103,26 +103,24 @@ homepage: http://github.com/dasch/ruby-bencode
|
|
103
103
|
licenses:
|
104
104
|
- MIT
|
105
105
|
metadata: {}
|
106
|
-
post_install_message:
|
106
|
+
post_install_message:
|
107
107
|
rdoc_options:
|
108
|
-
- --charset=UTF-8
|
108
|
+
- "--charset=UTF-8"
|
109
109
|
require_paths:
|
110
110
|
- lib
|
111
111
|
required_ruby_version: !ruby/object:Gem::Requirement
|
112
112
|
requirements:
|
113
|
-
- -
|
113
|
+
- - ">="
|
114
114
|
- !ruby/object:Gem::Version
|
115
115
|
version: '0'
|
116
116
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
117
|
requirements:
|
118
|
-
- -
|
118
|
+
- - ">="
|
119
119
|
- !ruby/object:Gem::Version
|
120
120
|
version: '0'
|
121
121
|
requirements: []
|
122
|
-
|
123
|
-
|
124
|
-
signing_key:
|
122
|
+
rubygems_version: 3.4.10
|
123
|
+
signing_key:
|
125
124
|
specification_version: 2
|
126
125
|
summary: Encode and decode bencoded data
|
127
126
|
test_files: []
|
128
|
-
has_rdoc:
|