hex_string 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.
@@ -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