hexdump 0.1.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.
@@ -0,0 +1,3 @@
1
+ -
2
+ ChangeLog.*
3
+ LICENSE.txt
File without changes
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour --format documentation
@@ -0,0 +1 @@
1
+ --markup markdown --title "hexdump Documentation" --protected
@@ -0,0 +1,10 @@
1
+ ### 0.1.0 / 2011-03-05
2
+
3
+ * Initial release:
4
+ * Can hexdump any Object supporting the `each_byte` method.
5
+ * Can send the hexdump output to any Object supporting the `<<` method.
6
+ * Can yield each line of hexdump, instead of printing the output.
7
+ * Supports printing hexadecimal, decimal, octal and binary bytes.
8
+ * Makes {String}, {StringIO}, {IO}, {File} objects hexdumpable.
9
+ * Fast-ish.
10
+
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Hal Brodigan
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,113 @@
1
+ # hexdump
2
+
3
+ * [Homepage](http://github.com/postmoderm/hexdump)
4
+ * [Issues](http://github.com/postmoderm/hexdump/issues)
5
+ * [Documentation](http://rubydoc.info/gems/hexdump/frames)
6
+ * [Email](mailto:postmodern.mod3 at gmail.com)
7
+
8
+ ## Description
9
+
10
+ Simple and Fast hexdumping for Ruby.
11
+
12
+ ## Features
13
+
14
+ * Can hexdump any Object supporting the `each_byte` method.
15
+ * Can send the hexdump output to any Object supporting the `<<` method.
16
+ * Can yield each line of hexdump, instead of printing the output.
17
+ * Supports printing ASCII, hexadecimal, decimal, octal and binary bytes.
18
+ * Makes {String}, {StringIO}, {IO}, {File} objects hexdumpable.
19
+ * Fast-ish.
20
+
21
+ ## Benchmarks
22
+
23
+ Benchmarks show {Hexdump.dump} processing 2.4M of data.
24
+
25
+ ### Ruby 1.9.2-p180
26
+
27
+ user system total real
28
+ hexdump (block) 7.740000 0.030000 7.770000 ( 8.138029)
29
+ hexdump 9.590000 0.050000 9.640000 ( 10.178203)
30
+ hexdump width=256 (block) 7.280000 0.020000 7.300000 ( 7.534507)
31
+ hexdump width=256 8.130000 0.030000 8.160000 ( 8.342448)
32
+ hexdump ascii=true (block) 7.740000 0.030000 7.770000 ( 7.958550)
33
+ hexdump ascii=true 9.550000 0.050000 9.600000 ( 9.803758)
34
+
35
+ ### Ruby 1.8.7-p334
36
+
37
+ user system total real
38
+ hexdump (block) 10.520000 0.010000 10.530000 ( 10.692901)
39
+ hexdump 11.580000 0.010000 11.590000 ( 11.873978)
40
+ hexdump width=256 (block) 9.960000 0.110000 10.070000 ( 11.592033)
41
+ hexdump width=256 10.660000 0.010000 10.670000 ( 10.987417)
42
+ hexdump ascii=true (block) 10.620000 0.010000 10.630000 ( 10.899925)
43
+ hexdump ascii=true 11.590000 0.030000 11.620000 ( 12.765259)
44
+
45
+ ### Jruby 1.5.6
46
+
47
+ user system total real
48
+ hexdump (block) 6.690000 0.000000 6.690000 ( 6.517000)
49
+ hexdump 8.234000 0.000000 8.234000 ( 8.234000)
50
+ hexdump width=256 (block) 4.488000 0.000000 4.488000 ( 4.488000)
51
+ hexdump width=256 5.462000 0.000000 5.462000 ( 5.462000)
52
+ hexdump ascii=true (block) 4.456000 0.000000 4.456000 ( 4.456000)
53
+ hexdump ascii=true 5.039000 0.000000 5.039000 ( 5.039000)
54
+
55
+ ### Rubinius 1.2.3
56
+
57
+ user system total real
58
+ hexdump (block) 10.013478 0.018997 10.032475 ( 11.148450)
59
+ hexdump 13.153001 0.015997 13.168998 ( 13.740888)
60
+ hexdump width=256 (block) 8.845656 0.008999 8.854655 ( 9.022673)
61
+ hexdump width=256 9.894496 0.008999 9.903495 ( 10.121070)
62
+ hexdump ascii=true (block) 9.576544 0.021996 9.598540 ( 9.810846)
63
+ hexdump ascii=true 13.088011 0.015998 13.104009 ( 13.390532)
64
+
65
+ ## Examples
66
+
67
+ require 'hexdump'
68
+
69
+ data = "hello\x00"
70
+
71
+ Hexdump.dump(data)
72
+ # 00000000 68 65 6c 6c 6f 00 |hello.|
73
+
74
+ data.hexdump
75
+ # 00000000 68 65 6c 6c 6f 00 |hello.|
76
+
77
+ # iterate over the hexdump lines
78
+ data.hexdump do |index,hex,printable|
79
+ index # => 0
80
+ hex # => ["68", "65", "6c", "6c", "6f", "00"]
81
+ printable # => ["h", "e", "l", "l", "o", "."]
82
+ end
83
+
84
+ # configure the width of the hexdump
85
+ Hexdump.dump('A' * 30, :width => 10)
86
+ # 00000000 41 41 41 41 41 41 41 41 41 41 |AAAAAAAAAA|
87
+ # 0000000a 41 41 41 41 41 41 41 41 41 41 |AAAAAAAAAA|
88
+ # 00000014 41 41 41 41 41 41 41 41 41 41 |AAAAAAAAAA|
89
+
90
+ Hexdump.dump(data, :ascii => true)
91
+ # 00000000 h e l l o 00 |hello.|
92
+
93
+ Hexdump.dump(data, :base => 16)
94
+ # 00000000 68 65 6c 6c 6f 00 |hello.|
95
+
96
+ Hexdump.dump(data, :base => :decimal)
97
+ # 00000000 104 101 108 108 111 0 |hello.|
98
+
99
+ Hexdump.dump(data, :base => :octal)
100
+ # 00000000 0150 0145 0154 0154 0157 0000 |hello.|
101
+
102
+ Hexdump.dump(data, :base => :binary)
103
+ # 00000000 01101000 01100101 01101100 01101100 01101111 00000000 |hello.|
104
+
105
+ ## Install
106
+
107
+ $ gem install hexdump
108
+
109
+ ## Copyright
110
+
111
+ Copyright (c) 2011 Hal Brodigan
112
+
113
+ See {file:LICENSE.txt} for details.
@@ -0,0 +1,38 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ gem 'ore-tasks', '~> 0.4'
6
+ require 'ore/tasks'
7
+
8
+ Ore::Tasks.new
9
+ rescue LoadError => e
10
+ STDERR.puts e.message
11
+ STDERR.puts "Run `gem install ore-tasks` to install 'ore/tasks'."
12
+ end
13
+
14
+ begin
15
+ gem 'rspec', '~> 2.4'
16
+ require 'rspec/core/rake_task'
17
+
18
+ RSpec::Core::RakeTask.new
19
+ rescue LoadError => e
20
+ task :spec do
21
+ abort "Please run `gem install rspec` to install RSpec."
22
+ end
23
+ end
24
+
25
+ task :test => :spec
26
+ task :default => :spec
27
+
28
+ begin
29
+ gem 'yard', '~> 0.6.0'
30
+ require 'yard'
31
+
32
+ YARD::Rake::YardocTask.new
33
+ rescue LoadError => e
34
+ task :yard do
35
+ abort "Please run `gem install yard` to install YARD."
36
+ end
37
+ end
38
+ task :doc => :yard
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH << File.expand_path(File.join(File.dirname(__FILE__),'..','lib'))
4
+
5
+ require 'hexdump'
6
+ require 'benchmark'
7
+
8
+ DATA = ((0..255).map { |b| b.chr }.join) * 10000
9
+ OUTPUT = Class.new { def <<(data); end }.new
10
+
11
+ Benchmark.bm(26) do |b|
12
+ b.report('hexdump (block)') do
13
+ Hexdump.dump(DATA) { |index,hex,print| }
14
+ end
15
+
16
+ b.report('hexdump') do
17
+ Hexdump.dump(DATA, :output => OUTPUT)
18
+ end
19
+
20
+ b.report('hexdump width=256 (block)') do
21
+ Hexdump.dump(DATA, :width => 256) { |index,hex,print| }
22
+ end
23
+
24
+ b.report('hexdump width=256') do
25
+ Hexdump.dump(DATA, :width => 256, :output => OUTPUT)
26
+ end
27
+
28
+ b.report('hexdump ascii=true (block)') do
29
+ Hexdump.dump(DATA, :ascci => true) { |index,hex,print| }
30
+ end
31
+
32
+ b.report('hexdump ascii=true') do
33
+ Hexdump.dump(DATA, :ascci => true, :output => OUTPUT)
34
+ end
35
+ end
@@ -0,0 +1,14 @@
1
+ name: hexdump
2
+ version: 0.1.0
3
+ summary: Simple and Fast hexdumping for Ruby.
4
+ description: Simple and Fast hexdumping for Ruby.
5
+ license: MIT
6
+ authors: hal
7
+ email: postmodern.mod3@gmail.com
8
+ homepage: http://github.com/postmodern/hexdump
9
+ has_yard: true
10
+
11
+ development_dependencies:
12
+ ore-tasks: ~> 0.4
13
+ rspec: ~> 2.4
14
+ yard: ~> 0.6.0
@@ -0,0 +1,15 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ begin
4
+ Ore::Specification.new do |gemspec|
5
+ # custom logic here
6
+ end
7
+ rescue NameError
8
+ begin
9
+ require 'ore/specification'
10
+ retry
11
+ rescue LoadError
12
+ STDERR.puts "The '#{__FILE__}' file requires Ore."
13
+ STDERR.puts "Run `gem install ore-core` to install Ore."
14
+ end
15
+ end
@@ -0,0 +1,2 @@
1
+ require 'hexdump/hexdump'
2
+ require 'hexdump/extensions'
@@ -0,0 +1,4 @@
1
+ require 'hexdump/extensions/string'
2
+ require 'hexdump/extensions/string_io'
3
+ require 'hexdump/extensions/io'
4
+ require 'hexdump/extensions/file'
@@ -0,0 +1,22 @@
1
+ require 'hexdump/hexdump'
2
+
3
+ class File
4
+
5
+ #
6
+ # Hexdumps the contents of a file.
7
+ #
8
+ # @param [String] path
9
+ # The path of the file.
10
+ #
11
+ # @param [Hash] options
12
+ # Additional options.
13
+ #
14
+ # @see Hexdump.dump
15
+ #
16
+ def self.hexdump(path,options={},&block)
17
+ self.open(path,'rb') do |file|
18
+ Hexdump.dump(file,options,&block)
19
+ end
20
+ end
21
+
22
+ end
@@ -0,0 +1,7 @@
1
+ require 'hexdump/hexdump'
2
+
3
+ class IO
4
+
5
+ include Hexdump
6
+
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'hexdump/hexdump'
2
+
3
+ class String
4
+
5
+ include Hexdump
6
+
7
+ end
@@ -0,0 +1,9 @@
1
+ require 'hexdump/hexdump'
2
+
3
+ require 'stringio'
4
+
5
+ class StringIO
6
+
7
+ include Hexdump
8
+
9
+ end
@@ -0,0 +1,139 @@
1
+ #
2
+ # Provides the {Hexdump.dump} method and can add hexdumping to other classes
3
+ # by including the {Hexdump} module.
4
+ #
5
+ # class AbstractData
6
+ #
7
+ # include Hexdump
8
+ #
9
+ # def each_byte
10
+ # # ...
11
+ # end
12
+ #
13
+ # end
14
+ #
15
+ # data = AbstractData.new
16
+ # data.hexdump
17
+ #
18
+ module Hexdump
19
+ #
20
+ # Hexdumps the given data.
21
+ #
22
+ # @param [#each_byte] data
23
+ # The data to be hexdumped.
24
+ #
25
+ # @param [Hash] options
26
+ # Additional options.
27
+ #
28
+ # @option options [Integer] :width (16)
29
+ # The number of bytes to dump for each line.
30
+ #
31
+ # @option options [Symbol, Integer] :base (:hexadecimal)
32
+ # The base to print bytes in. Supported bases include, `:hexadecimal`,
33
+ # `:hex`, `16, `:decimal`, `:dec`, `10, `:octal`, `:oct`, `8`,
34
+ # `:binary`, `:bin` and `2`.
35
+ #
36
+ # @option options [Boolean] :ascii (false)
37
+ # Print ascii characters when possible.
38
+ #
39
+ # @option options [#<<] :output (STDOUT)
40
+ # The output to print the hexdump to.
41
+ #
42
+ # @yield [index,hex_segment,print_segment]
43
+ # The given block will be passed the hexdump break-down of each segment.
44
+ #
45
+ # @yieldparam [Integer] index
46
+ # The index of the hexdumped segment.
47
+ #
48
+ # @yieldparam [Array<String>] hex_segment
49
+ # The hexadecimal-byte representation of the segment.
50
+ #
51
+ # @yieldparam [Array<String>] print_segment
52
+ # The print-character representation of the segment.
53
+ #
54
+ # @return [nil]
55
+ #
56
+ # @raise [ArgumentError]
57
+ # The given data does not define the `#each_byte` method, or
58
+ # the `:output` value does not support the `#<<` method.
59
+ #
60
+ def Hexdump.dump(data,options={})
61
+ unless data.respond_to?(:each_byte)
62
+ raise(ArgumentError,"the data to hexdump must define #each_byte")
63
+ end
64
+
65
+ output = options.fetch(:output,STDOUT)
66
+
67
+ unless output.respond_to?(:<<)
68
+ raise(ArgumentError,":output must support the #<< method")
69
+ end
70
+
71
+ width = options.fetch(:width,16)
72
+ base = options.fetch(:base,:hexadecimal)
73
+ ascii = options.fetch(:ascii,false)
74
+ byte_width, byte_format = case base
75
+ when :hexadecimal, :hex, 16
76
+ [2, "%.2x"]
77
+ when :decimal, :dec, 10
78
+ [3, "%3.d"]
79
+ when :octal, :oct, 8
80
+ [4, "0%.3o"]
81
+ when :binary, :bin, 2
82
+ [8, "%.8b"]
83
+ end
84
+
85
+ hex_byte = lambda { |byte|
86
+ if (ascii && (byte >= 0x20 && byte <= 0x7e))
87
+ byte.chr
88
+ else
89
+ byte_format % byte
90
+ end
91
+ }
92
+
93
+ print_byte = lambda { |byte|
94
+ if (byte >= 0x20 && byte <= 0x7e)
95
+ byte.chr
96
+ else
97
+ '.'
98
+ end
99
+ }
100
+
101
+ index = 0
102
+
103
+ hex_segment_width = ((width * byte_width) + (width - 1))
104
+ line_format = "%.8x %-#{hex_segment_width}s |%s|\n"
105
+
106
+ data.each_byte.each_slice(width) do |bytes|
107
+ hex_segment = bytes.map(&hex_byte)
108
+ print_segment = bytes.map(&print_byte)
109
+
110
+ if block_given?
111
+ yield(index,hex_segment,print_segment)
112
+ else
113
+ output << sprintf(
114
+ line_format,
115
+ index,
116
+ hex_segment.join(' '),
117
+ print_segment.join
118
+ )
119
+ end
120
+
121
+ index += width
122
+ end
123
+
124
+ # flush the hexdump buffer
125
+ return nil
126
+ end
127
+
128
+ #
129
+ # Hexdumps the object.
130
+ #
131
+ # @param [Hash] options
132
+ # Additional options.
133
+ #
134
+ # @see Hexdump.dump
135
+ #
136
+ def hexdump(options={},&block)
137
+ Hexdump.dump(self,options,&block)
138
+ end
139
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+ require 'hexdump/extensions'
3
+
4
+ describe "Hexdump extensions" do
5
+ it "should include Hexdump into String" do
6
+ String.should include(Hexdump)
7
+ end
8
+
9
+ it "should include Hexdump into StringIO" do
10
+ StringIO.should include(Hexdump)
11
+ end
12
+
13
+ it "should include Hexdump into IO" do
14
+ IO.should include(Hexdump)
15
+ end
16
+
17
+ it "should define File.hexdump" do
18
+ File.should respond_to(:hexdump)
19
+ end
20
+ end
@@ -0,0 +1,171 @@
1
+ require 'spec_helper'
2
+ require 'hexdump'
3
+
4
+ describe Hexdump do
5
+ let(:bytes) { [104, 101, 108, 108, 111] }
6
+ let(:hex_chars) { ['68', '65', '6c', '6c', '6f'] }
7
+ let(:decimal_chars) { ['104', '101', '108', '108', '111'] }
8
+ let(:octal_chars) { ['0150', '0145', '0154', '0154', '0157'] }
9
+ let(:binary_chars) { ['01101000', '01100101', '01101100', '01101100', '01101111'] }
10
+ let(:print_chars) { ['h', 'e', 'l', 'l', 'o'] }
11
+ let(:data) { print_chars.join }
12
+
13
+ describe "dump" do
14
+ it "should check if the data defines '#each_byte'" do
15
+ lambda {
16
+ subject.dump(Object.new)
17
+ }.should raise_error(ArgumentError)
18
+ end
19
+
20
+ it "should check if the :output supports the '#<<' method" do
21
+ lambda {
22
+ subject.dump(data, :output => Object.new)
23
+ }.should raise_error(ArgumentError)
24
+ end
25
+
26
+ it "should append each line of the hexdump to the output" do
27
+ lines = []
28
+ subject.dump(data, :output => lines)
29
+
30
+ lines.length.should == 1
31
+ lines[0].should include(hex_chars.join(' '))
32
+ lines[0].should include(print_chars.join)
33
+ end
34
+
35
+ it "should yield the parts of each hexdump line to the given block" do
36
+ lines = []
37
+
38
+ subject.dump(data) do |index,hex,print|
39
+ lines << [index, hex, print]
40
+ end
41
+
42
+ lines.length.should == 1
43
+ lines[0][0].should == 0
44
+ lines[0][1].should == hex_chars
45
+ lines[0][2].should == print_chars
46
+ end
47
+
48
+ it "should provide the index within the data for each line" do
49
+ indices = []
50
+
51
+ subject.dump('A' * 100, :width => 10) do |index,hex,print|
52
+ indices << index
53
+ end
54
+
55
+ indices.should == [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
56
+ end
57
+
58
+ it "should allow configuring the width, in bytes, of each line" do
59
+ widths = []
60
+
61
+ subject.dump('A' * 100, :width => 10) do |index,hex,print|
62
+ widths << hex.length
63
+ end
64
+
65
+ widths.should == ([10] * 10)
66
+ end
67
+
68
+ it "should hexdump the remaining bytes" do
69
+ chars = (['B'] * 4)
70
+ string = chars.join
71
+ leading = ('A' * 100)
72
+ remainder = nil
73
+
74
+ subject.dump(leading + string, :width => 10) do |index,hex,print|
75
+ remainder = print
76
+ end
77
+
78
+ remainder.should == chars
79
+ end
80
+
81
+ it "should provide the hexadecimal characters for each line" do
82
+ chars = []
83
+
84
+ subject.dump(data * 100, :width => 10) do |index,hex,print|
85
+ chars += hex
86
+ end
87
+
88
+ chars.should == (hex_chars * 100)
89
+ end
90
+
91
+ it "should allow printing ASCII characters in place of hex characters" do
92
+ chars = []
93
+
94
+ subject.dump(data, :ascii => true) do |index,hex,print|
95
+ chars += hex
96
+ end
97
+
98
+ chars.should == print_chars
99
+ end
100
+
101
+ it "should provide the print characters for each line" do
102
+ chars = []
103
+
104
+ subject.dump(data * 100, :width => 10) do |index,hex,print|
105
+ chars += print
106
+ end
107
+
108
+ chars.should == (print_chars * 100)
109
+ end
110
+
111
+ it "should map unprintable characters to '.'" do
112
+ unprintable = ((0x00..0x1f).map(&:chr) + (0x7f..0xff).map(&:chr)).join
113
+ chars = []
114
+
115
+ subject.dump(unprintable) do |index,hex,print|
116
+ chars += print
117
+ end
118
+
119
+ chars.should == (['.'] * unprintable.length)
120
+ end
121
+
122
+ it "should support dumping bytes in decimal format" do
123
+ chars = []
124
+
125
+ subject.dump(data, :base => :decimal) do |index,hex,print|
126
+ chars += hex
127
+ end
128
+
129
+ chars.should == decimal_chars
130
+ end
131
+
132
+ it "should support dumping bytes in octal format" do
133
+ chars = []
134
+
135
+ subject.dump(data, :base => :octal) do |index,hex,print|
136
+ chars += hex
137
+ end
138
+
139
+ chars.should == octal_chars
140
+ end
141
+
142
+ it "should support dumping bytes in binary format" do
143
+ chars = []
144
+
145
+ subject.dump(data, :base => :binary) do |index,hex,print|
146
+ chars += hex
147
+ end
148
+
149
+ chars.should == binary_chars
150
+ end
151
+ end
152
+
153
+ describe "#hexdump" do
154
+ subject do
155
+ obj = Object.new.extend(Hexdump)
156
+ obj.stub!(:each_byte).and_return(bytes.enum_for(:each))
157
+
158
+ obj
159
+ end
160
+
161
+ it "should hexdump the object" do
162
+ chars = []
163
+
164
+ subject.hexdump do |index,hex,print|
165
+ chars += hex
166
+ end
167
+
168
+ chars.should == hex_chars
169
+ end
170
+ end
171
+ end
@@ -0,0 +1,2 @@
1
+ gem 'rspec', '~> 2.4'
2
+ require 'rspec'
metadata ADDED
@@ -0,0 +1,112 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: hexdump
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.1.0
6
+ platform: ruby
7
+ authors:
8
+ - hal
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-03-05 00:00:00 -08:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: ore-tasks
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ~>
23
+ - !ruby/object:Gem::Version
24
+ version: "0.4"
25
+ type: :development
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ~>
34
+ - !ruby/object:Gem::Version
35
+ version: "2.4"
36
+ type: :development
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: yard
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ~>
45
+ - !ruby/object:Gem::Version
46
+ version: 0.6.0
47
+ type: :development
48
+ version_requirements: *id003
49
+ description: Simple and Fast hexdumping for Ruby.
50
+ email:
51
+ - postmodern.mod3@gmail.com
52
+ executables: []
53
+
54
+ extensions: []
55
+
56
+ extra_rdoc_files:
57
+ - README.md
58
+ - ChangeLog.md
59
+ - LICENSE.txt
60
+ files:
61
+ - .document
62
+ - .gemtest
63
+ - .rspec
64
+ - .yardopts
65
+ - ChangeLog.md
66
+ - LICENSE.txt
67
+ - README.md
68
+ - Rakefile
69
+ - benchmarks/hexdump.rb
70
+ - gemspec.yml
71
+ - hexdump.gemspec
72
+ - lib/hexdump.rb
73
+ - lib/hexdump/extensions.rb
74
+ - lib/hexdump/extensions/file.rb
75
+ - lib/hexdump/extensions/io.rb
76
+ - lib/hexdump/extensions/string.rb
77
+ - lib/hexdump/extensions/string_io.rb
78
+ - lib/hexdump/hexdump.rb
79
+ - spec/extensions_spec.rb
80
+ - spec/hexdump_spec.rb
81
+ - spec/spec_helper.rb
82
+ has_rdoc: yard
83
+ homepage: http://github.com/postmodern/hexdump
84
+ licenses:
85
+ - MIT
86
+ post_install_message:
87
+ rdoc_options: []
88
+
89
+ require_paths:
90
+ - lib
91
+ required_ruby_version: !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: "0"
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: "0"
103
+ requirements: []
104
+
105
+ rubyforge_project: hexdump
106
+ rubygems_version: 1.5.2
107
+ signing_key:
108
+ specification_version: 3
109
+ summary: Simple and Fast hexdumping for Ruby.
110
+ test_files:
111
+ - spec/hexdump_spec.rb
112
+ - spec/extensions_spec.rb