bencode 0.7.0 → 0.8.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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NzJhZTUzNzVhM2ZmMzNjOTJhYTkwNGJhOWU4NTFjZTNhOTdjY2Y1Ng==
5
+ data.tar.gz: !binary |-
6
+ YWQzMDg5NmM2ODYwY2M1Y2JhZTU4NzA0ZmE5MWRmN2QwODEwNTIxNA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ MjM1ODBjMmNmMjU1YmY3ZGViNDZiMmE5OTlkZTg4NWZjZGFkZGQ0NzEyNmQ3
10
+ NjEzOTI2NmVjMDEwNGYwNTI0NTAyNGU5YmE3ZWU5ODg4MWExMGJjZGY1MTll
11
+ YmE2MzljNTg1YzYzYTdhYjljMGQzOWQxYWYwOWQ2NTllM2M1NGQ=
12
+ data.tar.gz: !binary |-
13
+ ZmQ4ODY3NDM3NDZiYThjZDc5MTYzOTNiOTdlOGRhMDJmNjhhNDAxY2Q2OTM2
14
+ NWUwZmFhMWVkNGI0ZGI5ZWZlM2UzMTJmYWIxNDVmOWMzNzliY2RmMWUwMGVj
15
+ YjdlMDVhN2YxYzQwZWFiNjA1ZDY2OTI1MmU2YTU3OTYwZWZjZjM=
data/Gemfile CHANGED
@@ -1,6 +1,5 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- group :test do
4
- gem "minitest", :require => "minitest/unit"
5
- gem "shoulda", :git => "git://github.com/dasch/shoulda.git", :branch => "minitest"
6
- end
3
+ gemspec
4
+
5
+ gem "shoulda", :git => "git://github.com/dasch/shoulda.git", :branch => "minitest"
data/README.md CHANGED
@@ -1,4 +1,3 @@
1
-
2
1
  Ruby bencode binding
3
2
  ====================
4
3
 
@@ -24,14 +23,25 @@ Examples
24
23
 
25
24
  Encoding objects is as simple as calling `#bencode` on them:
26
25
 
27
- "foo bar".bencode # => "7:foo bar"
28
- 42.bencode # => "i42e"
29
- [1, 2, 3].bencode # => "li1ei2ei3ee"
30
- {"foo" => 1, "bar" => -10}.bencode # => "d3:bari-10e3:fooi1ee"
26
+ ```ruby
27
+ "foo bar".bencode # => "7:foo bar"
28
+ 42.bencode # => "i42e"
29
+ [1, 2, 3].bencode # => "li1ei2ei3ee"
30
+ {"foo" => 1, "bar" => -10}.bencode # => "d3:bari-10e3:fooi1ee"
31
+ ```
31
32
 
33
+ Decoding a complete data stream is as easy as calling `BEncode.load(data)`.
32
34
 
33
- Decoding a data stream is as easy as calling `BEncode.load(data)`.
35
+ Decoding a data stream in chunks works as follows:
34
36
 
37
+ ```ruby
38
+ irb(main):007:0> stream = BEncode::Parser.new(StringIO.new "d3:foo3:bared3:baz3:quxe")
39
+ => #<BEncode::Parser:0x007fbe6b008c88 @stream=#<StringIO:0x007fbe6b008cd8>>
40
+ irb(main):008:0> stream.parse!
41
+ => {"foo"=>"bar"}
42
+ irb(main):009:0> stream.parse!
43
+ => {"baz"=>"qux"}
44
+ ```
35
45
 
36
46
  License
37
47
  -------
@@ -48,3 +58,4 @@ Contributors
48
58
  - Eric Himmelreich
49
59
  - Allen Madsen ([blatyo](https://github.com/blatyo))
50
60
  - Ian Levesque ([ianlevesque](https://github.com/ianlevesque))
61
+ - Dirk Geurs ([Dirklectisch](https://github.com/Dirklectisch))
data/Rakefile CHANGED
@@ -1,22 +1,58 @@
1
-
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'date'
2
4
  require 'rake/testtask'
3
- require 'rake/rdoctask'
5
+ require 'rdoc/task'
6
+
7
+ #############################################################################
8
+ #
9
+ # Helper functions
10
+ #
11
+ #############################################################################
12
+
13
+ def name
14
+ @name ||= Dir['*.gemspec'].first.split('.').first
15
+ end
16
+
17
+ def version
18
+ line = File.read("lib/#{name}.rb")[/^\s*VERSION\s*=\s*.*/]
19
+ line.match(/.*VERSION\s*=\s*['"](.*)['"]/)[1]
20
+ end
21
+
22
+ def date
23
+ Date.today.to_s
24
+ end
25
+
26
+ def rubyforge_project
27
+ name
28
+ end
29
+
30
+ def gemspec_file
31
+ "#{name}.gemspec"
32
+ end
33
+
34
+ def gem_file
35
+ "#{name}-#{version}.gem"
36
+ end
37
+
38
+ def replace_header(head, header_name)
39
+ head.sub!(/(\.#{header_name}\s*= ').*'/) { "#{$1}#{send(header_name)}'"}
40
+ end
41
+
42
+ #############################################################################
43
+ #
44
+ # Standard tasks
45
+ #
46
+ #############################################################################
4
47
 
5
48
  task :default => :test
6
49
 
7
- desc "Run all unit tests"
8
50
  Rake::TestTask.new(:test) do |test|
9
51
  test.libs << 'lib' << 'test'
10
52
  test.pattern = 'test/**/*_test.rb'
11
53
  test.verbose = false
12
54
  end
13
55
 
14
-
15
- desc "Generate RDoc documentation"
16
- Rake::RDocTask.new :doc do |rdoc|
17
- rdoc.rdoc_dir = 'doc'
18
- end
19
-
20
56
  desc "Run all the benchmarks"
21
57
  task :benchmark do
22
58
  Dir["test/benchmark/*.rb"].each do |file|
@@ -26,17 +62,82 @@ task :benchmark do
26
62
  end
27
63
  end
28
64
 
29
- begin
30
- require 'jeweler'
31
- Jeweler::Tasks.new do |gem|
32
- gem.name = "bencode"
33
- gem.summary = "Encode and decode bencoded data"
34
- gem.description = "A simple encoder and decoder for the BitTorrent serialization format."
35
- gem.email = "daniel.schierbeck@gmail.com"
36
- gem.homepage = "http://github.com/dasch/ruby-bencode"
37
- gem.authors = ["Daniel Schierbeck"]
65
+ Rake::RDocTask.new do |rdoc|
66
+ rdoc.rdoc_dir = 'rdoc'
67
+ rdoc.title = "#{name} #{version}"
68
+ rdoc.rdoc_files.include('README*')
69
+ rdoc.rdoc_files.include('lib/**/*.rb')
70
+ end
71
+
72
+ desc "Open an irb session preloaded with this library"
73
+ task :console do
74
+ sh "irb -rubygems -r ./lib/#{name}.rb"
75
+ end
76
+
77
+ #############################################################################
78
+ #
79
+ # Packaging tasks
80
+ #
81
+ #############################################################################
82
+
83
+ desc "Create tag v#{version} and build and push #{gem_file} to Rubygems"
84
+ task :release => :build do
85
+ unless `git branch` =~ /^\* master$/
86
+ puts "You must be on the master branch to release!"
87
+ exit!
88
+ end
89
+ sh "git commit --allow-empty -a -m 'Release #{version}'"
90
+ sh "git tag v#{version}"
91
+ sh "git push origin master"
92
+ sh "git push origin v#{version}"
93
+ sh "gem push pkg/#{name}-#{version}.gem"
94
+ end
95
+
96
+ desc "Build #{gem_file} into the pkg directory"
97
+ task :build => :gemspec do
98
+ sh "mkdir -p pkg"
99
+ sh "gem build #{gemspec_file}"
100
+ sh "mv #{gem_file} pkg"
101
+ end
102
+
103
+ desc "Generate #{gemspec_file}"
104
+ task :gemspec => :validate do
105
+ # read spec file and split out manifest section
106
+ spec = File.read(gemspec_file)
107
+ head, manifest, tail = spec.split(" # = MANIFEST =\n")
108
+
109
+ # replace name version and date
110
+ replace_header(head, :name)
111
+ replace_header(head, :version)
112
+ replace_header(head, :date)
113
+ #comment this out if your rubyforge_project has a different name
114
+ replace_header(head, :rubyforge_project)
115
+
116
+ # determine file list from git ls-files
117
+ files = `git ls-files`.
118
+ split("\n").
119
+ sort.
120
+ reject { |file| file =~ /^\./ }.
121
+ reject { |file| file =~ /^(rdoc|pkg)/ }.
122
+ map { |file| " #{file}" }.
123
+ join("\n")
124
+
125
+ # piece file back together and write
126
+ manifest = " s.files = %w[\n#{files}\n ]\n"
127
+ spec = [head, manifest, tail].join(" # = MANIFEST =\n")
128
+ File.open(gemspec_file, 'w') { |io| io.write(spec) }
129
+ puts "Updated #{gemspec_file}"
130
+ end
131
+
132
+ desc "Validate #{gemspec_file}"
133
+ task :validate do
134
+ libfiles = Dir['lib/*'] - ["lib/#{name}.rb", "lib/#{name}"]
135
+ unless libfiles.empty?
136
+ puts "Directory `lib` should only contain a `#{name}.rb` file and `#{name}` dir."
137
+ exit!
138
+ end
139
+ unless Dir['VERSION*'].empty?
140
+ puts "A `VERSION` file at root level violates Gem best practices."
141
+ exit!
38
142
  end
39
- Jeweler::GemcutterTasks.new
40
- rescue LoadError
41
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
42
143
  end
data/bencode.gemspec ADDED
@@ -0,0 +1,63 @@
1
+ Gem::Specification.new do |s|
2
+ s.specification_version = 2 if s.respond_to? :specification_version=
3
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
4
+ s.rubygems_version = '1.3.5'
5
+
6
+ ## Leave these as is they will be modified for you by the rake gemspec task.
7
+ ## If your rubyforge_project name is different, then edit it and comment out
8
+ ## the sub! line in the Rakefile
9
+ s.name = 'bencode'
10
+ s.version = '0.8.0'
11
+ s.date = '2013-03-15'
12
+
13
+ s.summary = "Encode and decode bencoded data"
14
+ s.description = "A simple encoder and decoder for the BitTorrent serialization format."
15
+
16
+ s.authors = ["Daniel Schierbeck"]
17
+ s.email = "daniel.schierbeck@gmail.com"
18
+ s.homepage = "http://github.com/dasch/ruby-bencode"
19
+
20
+ s.require_paths = %w[lib]
21
+
22
+ s.rdoc_options = ["--charset=UTF-8"]
23
+ s.extra_rdoc_files = %w[README.md LICENSE]
24
+
25
+ s.add_development_dependency('rdoc')
26
+ s.add_development_dependency('rake')
27
+ s.add_development_dependency('minitest')
28
+ s.add_development_dependency('shoulda')
29
+
30
+ # = MANIFEST =
31
+ s.files = %w[
32
+ Gemfile
33
+ LICENSE
34
+ README.md
35
+ Rakefile
36
+ bencode.gemspec
37
+ lib/bencode.rb
38
+ lib/bencode/core_ext/array.rb
39
+ lib/bencode/core_ext/hash.rb
40
+ lib/bencode/core_ext/integer.rb
41
+ lib/bencode/core_ext/io.rb
42
+ lib/bencode/core_ext/object.rb
43
+ lib/bencode/core_ext/string.rb
44
+ lib/bencode/core_ext/stringio.rb
45
+ lib/bencode/decode.rb
46
+ lib/bencode/parseio.rb
47
+ lib/bencode/parser.rb
48
+ test/benchmark/decoding.rb
49
+ test/benchmark/encoding.rb
50
+ test/bittorrent_test.rb
51
+ test/decoding_test.rb
52
+ test/encoding_test.rb
53
+ test/environment.rb
54
+ test/fixtures/python.torrent
55
+ test/fixtures/test.torrent
56
+ test/shoulda_macros/decoding.rb
57
+ test/shoulda_macros/encoding.rb
58
+ test/utf8_decoding_test.rb
59
+ ]
60
+ # = MANIFEST =
61
+
62
+ s.test_files = s.files.select { |path| path =~ /^test\/test_.*\.rb/ }
63
+ end
data/lib/bencode.rb CHANGED
@@ -3,6 +3,8 @@
3
3
  #
4
4
  # See {BEncode.load} and {BEncode.dump}.
5
5
  module BEncode
6
+ VERSION = "0.8.0"
7
+
6
8
  class DecodeError < StandardError
7
9
  end
8
10
 
@@ -1,5 +1,8 @@
1
+ require 'bencode/parseio'
1
2
 
2
3
  class IO
4
+ include BEncode::ParseIO
5
+
3
6
  def self.bdecode(filename)
4
7
  open(filename, 'rb') {|io| io.bdecode}
5
8
  end
@@ -0,0 +1,6 @@
1
+ require 'stringio'
2
+ require 'bencode/parseio'
3
+
4
+ class StringIO
5
+ include BEncode::ParseIO
6
+ end
@@ -19,8 +19,8 @@ module BEncode
19
19
  # @return [Object] a Ruby object
20
20
  # @raise [DecodeError] if +str+ is malformed
21
21
  def self.load(str, opts = {})
22
- scanner = StringScanner.new(str)
23
- obj = parse(scanner)
22
+ scanner = BEncode::Parser.new(str)
23
+ obj = scanner.parse!
24
24
  raise BEncode::DecodeError unless (opts[:ignore_trailing_junk] || scanner.eos?)
25
25
  return obj
26
26
  end
@@ -33,52 +33,6 @@ module BEncode
33
33
  def self.load_file(path, opts = {})
34
34
  load(File.open(path, 'rb').read, opts)
35
35
  end
36
-
37
- private
38
-
39
- def self.parse(scanner) # :nodoc:
40
- val = case scanner.peek(1)[0]
41
- when ?i
42
- scanner.pos += 1
43
- num = scanner.scan_until(/e/) or raise BEncode::DecodeError
44
- num.chop.to_i
45
- when ?l
46
- scanner.pos += 1
47
- ary = []
48
- ary.push(parse(scanner)) until scanner.scan(/e/)
49
- ary
50
- when ?d
51
- scanner.pos += 1
52
- hsh = {}
53
- until scanner.scan(/e/)
54
- key = parse(scanner)
55
-
56
- unless key.is_a? String or key.is_a? Fixnum
57
- raise BEncode::DecodeError, "key must be a string or number"
58
- end
59
-
60
- hsh.store(key.to_s, parse(scanner))
61
- end
62
- hsh
63
- when ?0 .. ?9
64
- num = scanner.scan_until(/:/) or
65
- raise BEncode::DecodeError, "invalid string length (no colon)"
66
-
67
- begin
68
- length = num.chop.to_i
69
- str = scanner.peek(length)
70
- scanner.pos += num.chop.to_i
71
- rescue
72
- raise BEncode::DecodeError, "invalid string length"
73
- end
74
-
75
- str
76
- end
77
-
78
- raise BEncode::DecodeError if val.nil?
79
- val
80
- end
81
-
82
36
  end
83
37
 
84
38
  class String
@@ -0,0 +1,9 @@
1
+ module BEncode
2
+ module ParseIO
3
+ def peek
4
+ c = self.getc
5
+ self.ungetc(c)
6
+ c
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,80 @@
1
+ require 'stringio'
2
+ require 'bencode/parseio'
3
+
4
+ module BEncode
5
+ class Parser
6
+ attr_reader :stream
7
+
8
+ def initialize(stream)
9
+ if stream.kind_of? BEncode::ParseIO
10
+ @stream = stream
11
+ elsif stream.respond_to? :string
12
+ @stream = StringIO.new stream.string
13
+ elsif stream.respond_to? :to_s
14
+ @stream = StringIO.new stream.to_s
15
+ end
16
+ end
17
+
18
+ def parse!
19
+ case stream.peek
20
+ when ?i then parse_integer!
21
+ when ?l then parse_list!
22
+ when ?d then parse_dict!
23
+ when ?0 .. ?9 then parse_string!
24
+ end
25
+ end
26
+
27
+ def eos?
28
+ stream.eof?
29
+ end
30
+
31
+ private
32
+
33
+ def parse_integer!
34
+ stream.getc
35
+ num = stream.gets("e") or raise BEncode::DecodeError
36
+ num.chop.to_i
37
+ end
38
+
39
+ def parse_list!
40
+ stream.getc
41
+ ary = []
42
+ ary.push(parse!) until stream.peek == ?e
43
+ stream.getc
44
+ ary
45
+ end
46
+
47
+ def parse_dict!
48
+ stream.getc
49
+ hsh = {}
50
+ until stream.peek == ?e
51
+ key = parse!
52
+
53
+ unless key.is_a? String or key.is_a? Fixnum
54
+ raise BEncode::DecodeError, "key must be a string or number"
55
+ end
56
+
57
+ val = parse!
58
+
59
+ hsh.store(key.to_s, val)
60
+ end
61
+ stream.getc
62
+ hsh
63
+ end
64
+
65
+ def parse_string!
66
+ num = stream.gets(":") or
67
+ raise BEncode::DecodeError, "invalid string length (no colon)"
68
+
69
+ begin
70
+ length = num.chop.to_i
71
+ return "" if length == 0 # Workaround for Rubinius bug
72
+ str = stream.read(length)
73
+ rescue
74
+ raise BEncode::DecodeError, "invalid string length"
75
+ end
76
+
77
+ str
78
+ end
79
+ end
80
+ end
@@ -1,6 +1,4 @@
1
-
2
- require 'test/environment'
3
-
1
+ require 'environment'
4
2
 
5
3
  class BitTorrentTest < MiniTest::Unit::TestCase
6
4
  should "load a bencoded torrent file" do
@@ -1,5 +1,4 @@
1
-
2
- require 'test/environment'
1
+ require 'environment'
3
2
 
4
3
  class DecodingTest < MiniTest::Unit::TestCase
5
4
  context "The BEncode decoder" do
@@ -12,6 +11,9 @@ class DecodingTest < MiniTest::Unit::TestCase
12
11
 
13
12
  should_decode [1, 2, 3], "li1ei2ei3ee"
14
13
 
14
+ hsh = {"foo" => "bar", "baz" => "qux"}
15
+ should_decode hsh, "d3:foo3:bar3:baz3:quxe"
16
+
15
17
  should_decode 42, "i42eBOGUS", :ignore_trailing_junk => true
16
18
  end
17
19
  end
@@ -1,5 +1,4 @@
1
-
2
- require 'test/environment'
1
+ require 'environment'
3
2
 
4
3
  class EncodingTest < MiniTest::Unit::TestCase
5
4
  context "The BEncode encoder" do
data/test/environment.rb CHANGED
@@ -1,8 +1,8 @@
1
-
2
1
  require 'rubygems'
3
2
  require 'bundler/setup'
4
3
 
5
- Bundler.require(:default, :test)
4
+ require 'minitest/unit'
5
+ require 'shoulda'
6
6
 
7
7
  MiniTest::Unit.autorun
8
8
 
@@ -1,5 +1,4 @@
1
-
2
- require 'test/environment'
1
+ require 'environment'
3
2
 
4
3
  class UTF8DecodingTest < MiniTest::Unit::TestCase
5
4
  context "The BEncode decoder" do
metadata CHANGED
@@ -1,39 +1,84 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: bencode
3
- version: !ruby/object:Gem::Version
4
- hash: 3
5
- prerelease:
6
- segments:
7
- - 0
8
- - 7
9
- - 0
10
- version: 0.7.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.8.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Daniel Schierbeck
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2011-06-15 00:00:00 Z
19
- dependencies: []
20
-
11
+ date: 2013-03-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rdoc
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
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: shoulda
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'
21
69
  description: A simple encoder and decoder for the BitTorrent serialization format.
22
70
  email: daniel.schierbeck@gmail.com
23
71
  executables: []
24
-
25
72
  extensions: []
26
-
27
- extra_rdoc_files:
28
- - LICENSE
73
+ extra_rdoc_files:
29
74
  - README.md
30
- files:
31
- - .yardopts
75
+ - LICENSE
76
+ files:
32
77
  - Gemfile
33
78
  - LICENSE
34
79
  - README.md
35
80
  - Rakefile
36
- - VERSION
81
+ - bencode.gemspec
37
82
  - lib/bencode.rb
38
83
  - lib/bencode/core_ext/array.rb
39
84
  - lib/bencode/core_ext/hash.rb
@@ -41,7 +86,10 @@ files:
41
86
  - lib/bencode/core_ext/io.rb
42
87
  - lib/bencode/core_ext/object.rb
43
88
  - lib/bencode/core_ext/string.rb
89
+ - lib/bencode/core_ext/stringio.rb
44
90
  - lib/bencode/decode.rb
91
+ - lib/bencode/parseio.rb
92
+ - lib/bencode/parser.rb
45
93
  - test/benchmark/decoding.rb
46
94
  - test/benchmark/encoding.rb
47
95
  - test/bittorrent_test.rb
@@ -55,36 +103,27 @@ files:
55
103
  - test/utf8_decoding_test.rb
56
104
  homepage: http://github.com/dasch/ruby-bencode
57
105
  licenses: []
58
-
106
+ metadata: {}
59
107
  post_install_message:
60
- rdoc_options: []
61
-
62
- require_paths:
108
+ rdoc_options:
109
+ - --charset=UTF-8
110
+ require_paths:
63
111
  - lib
64
- required_ruby_version: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ">="
68
- - !ruby/object:Gem::Version
69
- hash: 3
70
- segments:
71
- - 0
72
- version: "0"
73
- required_rubygems_version: !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- hash: 3
79
- segments:
80
- - 0
81
- version: "0"
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ! '>='
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
82
122
  requirements: []
83
-
84
123
  rubyforge_project:
85
- rubygems_version: 1.8.5
124
+ rubygems_version: 2.0.3
86
125
  signing_key:
87
- specification_version: 3
126
+ specification_version: 2
88
127
  summary: Encode and decode bencoded data
89
128
  test_files: []
90
-
129
+ has_rdoc:
data/.yardopts DELETED
@@ -1,5 +0,0 @@
1
- --no-private
2
- --title "BEncode Documentation"
3
- --readme README.md
4
- lib/**/*.rb -
5
- LICENSE
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.7.0