bencode_blatyo 1.0.0 → 1.0.1

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.
@@ -1,9 +1,10 @@
1
- = BEncode 1.0
1
+ = BEncode
2
2
  * *Author* Allen Madsen (blatyo)
3
3
  * *My* *Site* http://www.allenmadsen.com
4
4
  * *Gem* http://gemcutter.org/gems/bencode_blatyo
5
5
  * *Source* http://github.com/blatyo/bencode
6
6
  * *Documentation* http://blatyo.github.com/bencode
7
+ * *Issue* *Tracker* http://github.com/blatyo/bencode/issues
7
8
 
8
9
  == Synopsis
9
10
  This gem provides a way to encode and parse bencodings used by the Bit Torrent protocol.
@@ -12,11 +13,11 @@ This gem provides a way to encode and parse bencodings used by the Bit Torrent p
12
13
 
13
14
  # install the gem
14
15
  > gem install bencode_blatyo
15
- Successfully installed bencode_blatyo-1.0.0
16
+ Successfully installed bencode_blatyo
16
17
  1 gem installed
17
- Installing ri documentation for bencode_blatyo-1.0.0...
18
- Building YARD (yri) index for bencode_blatyo-1.0.0...
19
- Installing RDoc documentation for bencode_blatyo-1.0.0.
18
+ Installing ri documentation for bencode_blatyo...
19
+ Building YARD (yri) index for bencode_blatyo...
20
+ Installing RDoc documentation for bencode_blatyo
20
21
 
21
22
  # somefile.rb
22
23
  require 'bencode'
@@ -124,6 +125,13 @@ of the last type registered for.
124
125
  BEncode::Dictionary.register MyClass
125
126
  MyClass.new.bencode #=> "d1:a1:a1:b1:be"
126
127
 
128
+ == Note on Reporting Issues
129
+
130
+ * Try to make a failing test case
131
+ * Tell me which version of ruby you're using
132
+ * Tell me which OS you are using
133
+ * Provide me with any extra files if necessary
134
+
127
135
  == Note on Patches/Pull Requests
128
136
 
129
137
  * Fork the project.
data/Rakefile CHANGED
@@ -5,8 +5,8 @@ begin
5
5
  require 'jeweler'
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = "bencode_blatyo"
8
- gem.summary = "This gem provides a way to encode and parse bencodings used by the Bit Torrent protocol."
9
- gem.description = "This gem provides a way to encode and parse bencodings used by the Bit Torrent protocol."
8
+ gem.summary = "This gem has been renamed to bencodr. Use that one instead."
9
+ gem.description = "This gem has been renamed to bencodr. Use that one instead."
10
10
  gem.email = "blatyo@gmail.com"
11
11
  gem.homepage = "http://github.com/blatyo/bencode"
12
12
  gem.authors = ["Allen Madsen"]
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.0.1
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{bencode_blatyo}
8
- s.version = "1.0.0"
8
+ s.version = "1.0.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Allen Madsen"]
12
- s.date = %q{2010-01-30}
13
- s.description = %q{This gem provides a way to encode and parse bencodings used by the Bit Torrent protocol.}
12
+ s.date = %q{2010-02-02}
13
+ s.description = %q{This gem has been renamed to bencodr. Use that one instead.}
14
14
  s.email = %q{blatyo@gmail.com}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
@@ -40,6 +40,7 @@ Gem::Specification.new do |s|
40
40
  "spec/bencode_spec.rb",
41
41
  "spec/samples/bencode.rb.torrent",
42
42
  "spec/samples/mini.bencode",
43
+ "spec/samples/python.torrent",
43
44
  "spec/spec.opts",
44
45
  "spec/spec_helper.rb"
45
46
  ]
@@ -47,7 +48,7 @@ Gem::Specification.new do |s|
47
48
  s.rdoc_options = ["--charset=UTF-8"]
48
49
  s.require_paths = ["lib"]
49
50
  s.rubygems_version = %q{1.3.5}
50
- s.summary = %q{This gem provides a way to encode and parse bencodings used by the Bit Torrent protocol.}
51
+ s.summary = %q{This gem has been renamed to bencodr. Use that one instead.}
51
52
  s.test_files = [
52
53
  "spec/bencode/dictionary_spec.rb",
53
54
  "spec/bencode/integer_spec.rb",
@@ -16,8 +16,8 @@ module BEncode
16
16
  #
17
17
  # BEncode.decode("6:string") #=> "string"
18
18
  #
19
- # @param [String] string the bencoded string to decode
20
- # @return [String, Integer, Hash, Array] the decoded object
19
+ # @param [::String] string the bencoded string to decode
20
+ # @return [::String, ::Integer, ::Hash, ::Array] the decoded object
21
21
  def decode(string)
22
22
  scanner = StringScanner.new(string)
23
23
  Parser.parse_object(scanner) or raise BEncodeError, "Invalid bencoding"
@@ -27,8 +27,8 @@ module BEncode
27
27
  #
28
28
  # BEncode.decode_file("simple.torrent") #=> "d8:announce32:http://www..."
29
29
  #
30
- # @param [String] file the file to decode
31
- # @return [String, Integer, Hash, Array] the decoded object
30
+ # @param [::String] file the file to decode
31
+ # @return [::String, ::Integer, ::Hash, ::Array] the decoded object
32
32
  def decode_file(file)
33
33
  decode(File.open(file, 'rb') {|f| f.read})
34
34
  end
@@ -38,7 +38,7 @@ module BEncode
38
38
  # BEncode.encode("string") #=> "6:string"
39
39
  #
40
40
  # @param [#bencode] object the object to encode
41
- # @return [String] the bencoded object
41
+ # @return [::String] the bencoded object
42
42
  def encode(object)
43
43
  object.bencode
44
44
  end
@@ -47,7 +47,7 @@ module BEncode
47
47
  #
48
48
  # BEncode.encode("string") #=> "6:string"
49
49
  #
50
- # @param [String] file the file to write the bencoded object to
50
+ # @param [::String] file the file to write the bencoded object to
51
51
  # @param [#bencode] object the object to encode
52
52
  def encode_file(file, object)
53
53
  File.open(file, 'wb') {|f| f.write encode(object)}
@@ -10,7 +10,7 @@ module BEncode
10
10
  #
11
11
  # {:cow => "moo", :seven => 7}.bencode #=> "d3:cow3:moo5:seveni7ee"
12
12
  #
13
- # @return [String] the bencoded dictionary
13
+ # @return [::String] the bencoded dictionary
14
14
  def bencode
15
15
  (respond_to?(:to_h) ? to_h : to_hash).bencode
16
16
  end
@@ -43,7 +43,7 @@ module BEncode
43
43
  #
44
44
  # {:cow => "moo", :seven => 7}.bencode #=> "d3:cow3:moo5:seveni7ee"
45
45
  #
46
- # @return [String] the bencoded dictionary
46
+ # @return [::String] the bencoded dictionary
47
47
  def bencode
48
48
  keys.sort{|a, b| a.to_s <=> b.to_s}.collect do |key|
49
49
  key.to_s.bencode + self[key].bencode
@@ -9,7 +9,7 @@ module BEncode
9
9
  #
10
10
  # 1.bencode #=> "i1e"
11
11
  #
12
- # @return [String] the bencoded integer
12
+ # @return [::String] the bencoded integer
13
13
  def bencode
14
14
  (respond_to?(:to_i) ? to_i : to_int).bencode
15
15
  end
@@ -45,7 +45,7 @@ module BEncode
45
45
  # 3.bencode #=> "i3e"
46
46
  # -3.bencode #=> "i-3e"
47
47
  #
48
- # @return [String] the bencoded integer
48
+ # @return [::String] the bencoded integer
49
49
  def bencode
50
50
  [:i, self, :e].join
51
51
  end
@@ -9,7 +9,7 @@ module BEncode
9
9
  #
10
10
  # [].bencode #=> "le"
11
11
  #
12
- # @return [String] the bencoded list
12
+ # @return [::String] the bencoded list
13
13
  def bencode
14
14
  (respond_to?(:to_ary) ? to_ary : to_a).bencode
15
15
  end
@@ -41,7 +41,7 @@ module BEncode
41
41
  #
42
42
  # [:eggs, "ham", 3, 4.1].bencode #=> "l4:eggs3:hami3ei4ee"
43
43
  #
44
- # @return [String] the bencoded list
44
+ # @return [::String] the bencoded list
45
45
  def bencode
46
46
  collect do |element|
47
47
  element.bencode
@@ -11,7 +11,7 @@ module BEncode
11
11
  # BEncode::Parser.parse_object(scanner) #=> "string"
12
12
  #
13
13
  # @param [StringScanner] scanner the scanner of a bencoded object
14
- # @return [String, Integer, Hash, Array, nil] an object if type is recognized or nil
14
+ # @return [::String, ::Integer, ::Hash, ::Array, nil] an object if type is recognized or nil
15
15
  def parse_object(scanner)
16
16
  case scanner.peek(1)[0]
17
17
  when ?0..?9
@@ -33,11 +33,11 @@ module BEncode
33
33
  # BEncode::Parser.parse_string(scanner) #=> "string"
34
34
  #
35
35
  # @param [StringScanner] scanner the scanner of a bencoded string
36
- # @return [String] the parsed string
36
+ # @return [::String] the parsed string
37
37
  def parse_string(scanner)
38
38
  length = scanner.scan(/[1-9][0-9]*|0/) or raise BEncodeError, "Invalid string: length invalid. #{scanner.pos}"
39
39
  scanner.scan(/:/) or raise BEncodeError, "Invalid string: missing colon(:). #{scanner.pos}"
40
- scanner.scan(/.{#{length.to_i}}/) or raise BEncodeError, "Invalid string: length too long(#{length}) #{scanner.pos}."
40
+ scanner.scan(/.{#{length}}/m) or raise BEncodeError, "Invalid string: length too long(#{length}) #{scanner.pos}."
41
41
  end
42
42
 
43
43
  # This method parases a bencoded integer.
@@ -46,7 +46,7 @@ module BEncode
46
46
  # BEncode::Parser.parse_integer(scanner) #=> 1
47
47
  #
48
48
  # @param [StringScanner] scanner the scanner of a bencoded integer
49
- # @return [Integer] the parsed integer
49
+ # @return [::Integer] the parsed integer
50
50
  def parse_integer(scanner)
51
51
  scanner.scan(/i/) or raise BEncodeError, "Invalid integer: missing opening i. #{scanner.pos}"
52
52
  integer = scanner.scan(/-?[1-9][0-9]*|0/) or raise BEncodeError, "Invalid integer: valid integer not found. #{scanner.pos}"
@@ -60,7 +60,7 @@ module BEncode
60
60
  # BEncode::Parser.parse_list(scanner) #=> []
61
61
  #
62
62
  # @param [StringScanner] scanner the scanner of a bencoded list
63
- # @return [Array] the parsed array
63
+ # @return [::Array] the parsed array
64
64
  def parse_list(scanner)
65
65
  list = []
66
66
 
@@ -81,7 +81,7 @@ module BEncode
81
81
  # BEncode::Parser.parse_dictionary(scanner) #=> {}
82
82
  #
83
83
  # @param [StringScanner] scanner the scanner of a bencoded dictionary
84
- # @return [Hash] the parsed hash
84
+ # @return [::Hash] the parsed hash
85
85
  def parse_dictionary(scanner)
86
86
  dictionary = {}
87
87
 
@@ -11,7 +11,7 @@ module BEncode
11
11
  #
12
12
  # :symbol.bencode #=> "6:symbol"
13
13
  #
14
- # @return [String] the bencoded string
14
+ # @return [::String] the bencoded string
15
15
  def bencode
16
16
  (respond_to?(:to_s) ? to_s : to_str).bencode
17
17
  end
@@ -46,7 +46,7 @@ module BEncode
46
46
  #
47
47
  # "string".bencode #=> "6:string"
48
48
  #
49
- # @return [String] the bencoded string
49
+ # @return [::String] the bencoded string
50
50
  def bencode
51
51
  [length, ':', self].join
52
52
  end
@@ -43,8 +43,13 @@ describe BEncode do
43
43
 
44
44
  describe "#encode_file" do
45
45
  context "when an object gets bencoded and written to a file" do
46
+ before :all do
47
+ @path = File.join(File.dirname(__FILE__), '..', 'tmp')
48
+ Dir.mkdir(@path) unless File.exists? @path
49
+ end
50
+
46
51
  before :each do
47
- @file = File.join(File.dirname(__FILE__), '..', 'tmp', 'test.bencode')
52
+ @file = File.join(@path, 'test.bencode')
48
53
  @object = "string"
49
54
  BEncode.encode_file(@file, @object)
50
55
  end
@@ -60,6 +65,15 @@ describe BEncode do
60
65
  after :each do
61
66
  File.delete(@file)
62
67
  end
68
+
69
+ after :all do
70
+ Dir.delete(@path) if File.exists? @path
71
+ end
72
+ end
73
+
74
+ it "should read a torrent with newlines as part of a string without raising an error" do
75
+ file = File.join(File.dirname(__FILE__), 'samples', 'python.torrent')
76
+ lambda{BEncode.decode_file file}.should_not raise_error
63
77
  end
64
78
  end
65
79
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bencode_blatyo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Allen Madsen
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-30 00:00:00 -05:00
12
+ date: 2010-02-02 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -32,7 +32,7 @@ dependencies:
32
32
  - !ruby/object:Gem::Version
33
33
  version: "0"
34
34
  version:
35
- description: This gem provides a way to encode and parse bencodings used by the Bit Torrent protocol.
35
+ description: This gem has been renamed to bencodr. Use that one instead.
36
36
  email: blatyo@gmail.com
37
37
  executables: []
38
38
 
@@ -65,6 +65,7 @@ files:
65
65
  - spec/bencode_spec.rb
66
66
  - spec/samples/bencode.rb.torrent
67
67
  - spec/samples/mini.bencode
68
+ - spec/samples/python.torrent
68
69
  - spec/spec.opts
69
70
  - spec/spec_helper.rb
70
71
  has_rdoc: true
@@ -94,7 +95,7 @@ rubyforge_project:
94
95
  rubygems_version: 1.3.5
95
96
  signing_key:
96
97
  specification_version: 3
97
- summary: This gem provides a way to encode and parse bencodings used by the Bit Torrent protocol.
98
+ summary: This gem has been renamed to bencodr. Use that one instead.
98
99
  test_files:
99
100
  - spec/bencode/dictionary_spec.rb
100
101
  - spec/bencode/integer_spec.rb