bencode 0.7.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
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