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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 07cb5be3744b878726ce641c469802ed586c800a
4
- data.tar.gz: 1645e9613e22a9e144f4f766809821bf144ce891
2
+ SHA256:
3
+ metadata.gz: 3df918cce71dce118a46f227cc80ba6b72e99b37b6ac3765786a2ce3946320d5
4
+ data.tar.gz: ec14358f50516721c80a71ea31d28a66c1fa576eb683b09e79239d60fa4d9c00
5
5
  SHA512:
6
- metadata.gz: 59701813409b78eba18008e281fc7c0dbe817baabd2e47d2bef356af3d7f5c43bb8087ba9caefd0ff80e974f61249878021138bb58f46daa62a06fb0a97e073b
7
- data.tar.gz: 13aa5d05f693c5386fd6d8500c6e8b76cad3459ed159a03ba60dece5d116d6eb680e53a071d24b303282d80f2965b9b75675168850f9d5cba49f0a077eabf3e9
6
+ metadata.gz: 90e126ffca4d28f53c874260c596c91c13fd6d51195e6d1fc9027dbdcdb49e9917899152307a78aff72d45caf611551d77ba2c7fe505878e5e49f7ffaf475e28
7
+ data.tar.gz: b975f17c141d32da9eedce9788badd6b5155ccfc875e2ddc7a541fb22a77ded9df59906684a38d2cea76aac4fd1ecd53ff84e3392d569b80cfaf90bc78ed292f
data/README.md CHANGED
@@ -59,3 +59,4 @@ Contributors
59
59
  - Allen Madsen ([blatyo](https://github.com/blatyo))
60
60
  - Ian Levesque ([ianlevesque](https://github.com/ianlevesque))
61
61
  - Dirk Geurs ([Dirklectisch](https://github.com/Dirklectisch))
62
+ - Xinyue Lu ([msg7086](https://github.com/msg7086))
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.8.1'
11
- s.date = '2014-05-19'
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."
@@ -31,6 +31,8 @@ module BEncode
31
31
  # @option (see .load)
32
32
  # @return (see .load)
33
33
  def self.load_file(path, opts = {})
34
- load(File.open(path, 'rb').read, opts)
34
+ File.open(path, 'rb') do |io|
35
+ load(io, opts)
36
+ end
35
37
  end
36
38
  end
@@ -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? Fixnum
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
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # See {BEncode.load} and {BEncode.dump}.
5
5
  module BEncode
6
- VERSION = "0.8.1"
6
+ VERSION = "1.0.0"
7
7
 
8
8
  class DecodeError < StandardError
9
9
  end
@@ -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.8.1
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: 2014-05-19 00:00:00.000000000 Z
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
- rubyforge_project:
123
- rubygems_version: 2.1.11
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: