hex_string 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8408eeb29aa2d5b8344f8f6abe5ccf5e3547c5ce
4
+ data.tar.gz: d5688b495be3d5cfece1145cadc63a73c5e3ed88
5
+ SHA512:
6
+ metadata.gz: de884f446e4ae3daebd96d7a4d00bd4110d964fea9d4c6f81d0205f905f5916cb2adcfba2ee52c8f88172766e6759197213b04152d5ccd671efba9feee94c0c6
7
+ data.tar.gz: ec780dc2ae34936ab81d84c673ecdabed4505a4986b71360677baf38fc18827dca4ed922bc78c941fa10468f25d28b2044d6e2ebe01f562081b2f4efcbe89b25
data/.gitignore CHANGED
@@ -3,3 +3,5 @@ pkg/*
3
3
  .bundle
4
4
  doc
5
5
  .yardoc
6
+ .ruby-version
7
+ Gemfile.lock
data/README.md CHANGED
@@ -24,6 +24,10 @@ Examples
24
24
  >> File.read("/bin/ls")[0..3].to_hex_string
25
25
  => "ca fe ba be"
26
26
 
27
+ # Omit spaces in hex string output:
28
+ >> "hello".to_hex_string(false)
29
+ => "68656c6c6f"
30
+
27
31
  Motivation
28
32
  ----------
29
33
  When working with binary message or file formats, we often want to have a peek
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "hex_string"
5
- s.version = "1.0.0"
5
+ s.version = "1.0.1"
6
6
  s.platform = Gem::Platform::RUBY
7
7
  s.authors = ["David Crosby", "Micah Alles"]
8
8
  s.email = ["crosby@atomicobject.com", "alles@atomicobject.com"]
@@ -19,7 +19,12 @@ module HexString
19
19
  raise "Can't translate a string unless it has an even number of digits"
20
20
  end
21
21
  raise "Can't translate non-hex characters" if stripped =~ /[^0-9A-Fa-f]/
22
- [stripped].pack('H*')
22
+ res = [stripped].pack('H*')
23
+ if RUBY_VERSION =~ /1.8/
24
+ res
25
+ else
26
+ res.force_encoding("ascii-8bit")
27
+ end
23
28
  end
24
29
 
25
30
  # Convert binary data into a human-readable hex string.
@@ -32,8 +37,13 @@ module HexString
32
37
  # Eg:
33
38
  # >> "hello world".to\_hex\_string
34
39
  # => "68 65 6c 6c 6f 20 77 6f 72 6c 64"
35
- def to_hex_string
36
- self.unpack('H*').first.gsub(/(..)/,'\1 ').rstrip
40
+ def to_hex_string(readable = true)
41
+ unpacked = self.unpack('H*').first
42
+ if readable
43
+ unpacked.gsub(/(..)/,'\1 ').rstrip
44
+ else
45
+ unpacked
46
+ end
37
47
  end
38
48
  end
39
49
 
@@ -11,21 +11,29 @@ class HexStringTest < Test::Unit::TestCase
11
11
  end
12
12
  end
13
13
 
14
+ def fix_encoding(str)
15
+ if RUBY_VERSION =~ /1.8/
16
+ str
17
+ else
18
+ str.force_encoding("ascii-8bit")
19
+ end
20
+ end
21
+
14
22
  should "allow human readable hex strings to become actual byte strings" do
15
23
  human = "0102030405060708090a0b0c0d0e0f"
16
- expect = "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
24
+ expect = fix_encoding("\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f")
17
25
  assert_equal expect, human.to_byte_string
18
26
  end
19
27
 
20
28
  should "not care about case of a-f or A-F" do
21
29
  human = "aabbccddeeffAABBCCDDEEFF"
22
- expect = "\xaa\xbb\xcc\xdd\xee\xff\xaa\xbb\xcc\xdd\xee\xff"
30
+ expect = fix_encoding("\xaa\xbb\xcc\xdd\xee\xff\xaa\xbb\xcc\xdd\xee\xff")
23
31
  assert_equal expect, human.to_byte_string
24
32
  end
25
33
 
26
34
  should "ignore whitespace of all kinds" do
27
35
  human = "\t\t\taa \t\t bb c\nc d\tdee ffAABBCCDDEEFF\t \n\r"
28
- expect = "\xaa\xbb\xcc\xdd\xee\xff\xaa\xbb\xcc\xdd\xee\xff"
36
+ expect = fix_encoding("\xaa\xbb\xcc\xdd\xee\xff\xaa\xbb\xcc\xdd\xee\xff")
29
37
  assert_equal expect, human.to_byte_string
30
38
  end
31
39
 
@@ -50,6 +58,10 @@ class HexStringTest < Test::Unit::TestCase
50
58
  assert_equal "68 65 6c 6c 6f", "hello".to_hex_string
51
59
  end
52
60
 
61
+ should "convert byte strings into a single hex string without spaces" do
62
+ assert_equal "68656c6c6f", "hello".to_hex_string(false)
63
+ end
64
+
53
65
  should "provide empty hex strings when operating on empty strings" do
54
66
  assert_equal "", "".to_hex_string
55
67
  end
metadata CHANGED
@@ -1,99 +1,81 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: hex_string
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease: false
6
- segments:
7
- - 1
8
- - 0
9
- - 0
10
- version: 1.0.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - David Crosby
14
8
  - Micah Alles
15
9
  autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
-
19
- date: 2011-07-06 00:00:00 -04:00
20
- default_executable:
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
12
+ date: 2014-02-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
23
15
  name: bundler
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 23
31
- segments:
32
- - 1
33
- - 0
34
- - 0
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - '>='
19
+ - !ruby/object:Gem::Version
35
20
  version: 1.0.0
36
21
  type: :development
37
- version_requirements: *id001
38
- - !ruby/object:Gem::Dependency
39
- name: rake
40
22
  prerelease: false
41
- requirement: &id002 !ruby/object:Gem::Requirement
42
- none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- hash: 63
47
- segments:
48
- - 0
49
- - 8
50
- - 0
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: 1.0.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: rake
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
51
34
  version: 0.8.0
52
35
  type: :development
53
- version_requirements: *id002
54
- - !ruby/object:Gem::Dependency
55
- name: yard
56
36
  prerelease: false
57
- requirement: &id003 !ruby/object:Gem::Requirement
58
- none: false
59
- requirements:
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: 0.8.0
42
+ - !ruby/object:Gem::Dependency
43
+ name: yard
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
60
46
  - - ~>
61
- - !ruby/object:Gem::Version
62
- hash: 15
63
- segments:
64
- - 0
65
- - 6
66
- - 4
47
+ - !ruby/object:Gem::Version
67
48
  version: 0.6.4
68
49
  type: :development
69
- version_requirements: *id003
70
- - !ruby/object:Gem::Dependency
71
- name: bluecloth
72
50
  prerelease: false
73
- requirement: &id004 !ruby/object:Gem::Requirement
74
- none: false
75
- requirements:
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: 0.6.4
56
+ - !ruby/object:Gem::Dependency
57
+ name: bluecloth
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
76
60
  - - ~>
77
- - !ruby/object:Gem::Version
78
- hash: 25
79
- segments:
80
- - 2
81
- - 0
82
- - 11
61
+ - !ruby/object:Gem::Version
83
62
  version: 2.0.11
84
63
  type: :development
85
- version_requirements: *id004
86
- description: String extensions to convert binary data to / from human readable hex tuples.
87
- email:
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 2.0.11
70
+ description: String extensions to convert binary data to / from human readable hex
71
+ tuples.
72
+ email:
88
73
  - crosby@atomicobject.com
89
74
  - alles@atomicobject.com
90
75
  executables: []
91
-
92
76
  extensions: []
93
-
94
77
  extra_rdoc_files: []
95
-
96
- files:
78
+ files:
97
79
  - .gitignore
98
80
  - .yardopts
99
81
  - Gemfile
@@ -102,39 +84,28 @@ files:
102
84
  - hex_string.gemspec
103
85
  - lib/hex_string.rb
104
86
  - test/hex_string_test.rb
105
- has_rdoc: true
106
- homepage: ""
87
+ homepage: ''
107
88
  licenses: []
108
-
89
+ metadata: {}
109
90
  post_install_message:
110
91
  rdoc_options: []
111
-
112
- require_paths:
92
+ require_paths:
113
93
  - lib
114
- required_ruby_version: !ruby/object:Gem::Requirement
115
- none: false
116
- requirements:
117
- - - ">="
118
- - !ruby/object:Gem::Version
119
- hash: 3
120
- segments:
121
- - 0
122
- version: "0"
123
- required_rubygems_version: !ruby/object:Gem::Requirement
124
- none: false
125
- requirements:
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- hash: 3
129
- segments:
130
- - 0
131
- version: "0"
94
+ required_ruby_version: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ required_rubygems_version: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
132
104
  requirements: []
133
-
134
105
  rubyforge_project: hex_string
135
- rubygems_version: 1.3.7
106
+ rubygems_version: 2.0.3
136
107
  signing_key:
137
- specification_version: 3
108
+ specification_version: 4
138
109
  summary: String extensions to convert binary data to / from human readable hex tuples.
139
- test_files:
110
+ test_files:
140
111
  - test/hex_string_test.rb