base32h 0.1.0 → 0.1.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/base32h.rb +49 -19
  3. metadata +2 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: de7e1abc9f5fbb560cd132ff8c7d11c0c8c91e3b751d2031988de46cc3072b7b
4
- data.tar.gz: 734e6651e89a697c7d8faeee81351a235a2d3473215e027cd7b7cae1897685d6
3
+ metadata.gz: fc91506f58aea74f8356374108a71bc367c03e9730bfb0fa29101472c0b506f3
4
+ data.tar.gz: a00a043947aeb4cd6a8f4abbb332f1110515da60d664ede1fd1bb972d4317f70
5
5
  SHA512:
6
- metadata.gz: 2022dfbdefa1e442441a68118e1cc82a497f75f703e23f98b0078a6c93f482225ce21fc66388e826f76d6aa47b7401ae69075b43ce59d40837664a0aab1ecd68
7
- data.tar.gz: 93b45da982c68477c84ff31ec3926038c24f26d1b1fb7aa94551b50bcf17a79f9e48099e4f1a10f334b20df25ca78dcecf89b725fe28549d8447cf7d8b9edc95
6
+ metadata.gz: 1c19d762b0ceaac4274fc54e77e7d01a5db96118f1f86f1a3f8e3ea0def3111cdef18e2ed5ffe6aa053250d2fb8463cce829eb01d869ee11999f8f07059fbae9
7
+ data.tar.gz: fd14eda07b8c3832b239aba0159c4af7f66cffcde005d150785da211fd5b60e4c5ebffb17cae859be522559946aa05c1369541cbd3d0b7f45c999573045c471f
@@ -1,12 +1,12 @@
1
1
  ##
2
2
  # This module provides Base32H encoding and decoding functions.
3
3
  module Base32H
4
- VERSION = "0.1.0"
4
+ VERSION = "0.1.1"
5
5
 
6
6
  extend self
7
7
 
8
8
  ##
9
- # The complete list of Base32H digits, as an array of strings; the
9
+ # The complete list of Base32H digits, as an array of strings. The
10
10
  # index of the array is the numeric value of the digit(s) in the
11
11
  # string at that index. The first character in each string is the
12
12
  # "canonical" digit (i.e. the one that Base32H-conformant encoders
@@ -15,10 +15,10 @@ module Base32H
15
15
  # Base32H-conformant decoders *must* accept and correctly decode to
16
16
  # that value).
17
17
  #
18
- # For example, +digits[27]+ returns +'VvUu'+, meaning that the
19
- # "canonical" digit of value 27 is +V+, and that +v+, +U+, and +u+
20
- # are all "aliases" of that canonical digit and decode to a value of
21
- # 27.
18
+ # @example
19
+ # Base32H.digits[27] #=> 'VvUu'
20
+ #
21
+ # @return [Array<String>] the full list of digits
22
22
  def digits
23
23
  ['0Oo',
24
24
  '1Ii',
@@ -54,11 +54,16 @@ module Base32H
54
54
  'Zz']
55
55
  end
56
56
 
57
+ # @!group Encoders
58
+
57
59
  ##
58
- # :category: Encoding Digit
59
- #
60
60
  # Encodes an integer between 0 and 31 (inclusive) to its Base32H
61
- # representation.
61
+ # representation. Returns +nil+ for input values outside that
62
+ # range.
63
+ #
64
+ # @param d [#to_i] the integer value of the requested digit
65
+ #
66
+ # @return [String, NilClass] the resulting digit
62
67
  def encode_digit(d)
63
68
  d = d.to_i
64
69
  return nil unless (0..31).include? d
@@ -66,9 +71,11 @@ module Base32H
66
71
  end
67
72
 
68
73
  ##
69
- # :category: Encoding Numeric
70
- #
71
74
  # Encodes an integer to its Base32H representation.
75
+ #
76
+ # @param int [#to_i] the integer to encode
77
+ #
78
+ # @return [String] the encoded number
72
79
  def encode(int)
73
80
  rem = int.to_i.abs
74
81
  out = []
@@ -81,9 +88,11 @@ module Base32H
81
88
  end
82
89
 
83
90
  ##
84
- # :category: Encoding Binary
85
- #
86
91
  # Encodes a (binary) string to its Base32H representation.
92
+ #
93
+ # @param bin [String] the string/binary to encode
94
+ #
95
+ # @return [String] the encoded binary
87
96
  def encode_bin(bin)
88
97
  data = bin.unpack('C*')
89
98
  extra = data.length % 5
@@ -96,19 +105,28 @@ module Base32H
96
105
  out.join ''
97
106
  end
98
107
 
108
+ # @!endgroup
109
+
110
+ # @!group Decoders
111
+
99
112
  ##
100
- # :category: Decoding Digit
101
- #
102
113
  # Decodes a single Base32H digit to its integer representation.
114
+ # Returns nil if the input is not a Base32H digit.
115
+ #
116
+ # @param d [#to_s] the digit to decode
117
+ #
118
+ # @return [Integer] the digit's value
103
119
  def decode_digit(d)
104
120
  d = d.to_s
105
121
  digits.find_index {|i| i.include? d}
106
122
  end
107
123
 
108
124
  ##
109
- # :category: Decoding Numeric
110
- #
111
125
  # Decodes a Base32H number to its integer representation.
126
+ #
127
+ # @param str [#to_s] the number to decode
128
+ #
129
+ # @return [Integer] the decoded integer
112
130
  def decode(str)
113
131
  res = str.to_s.chars.reverse.reduce({acc: 0, exp: 0}) do |state, char|
114
132
  digit = decode_digit(char)
@@ -123,9 +141,11 @@ module Base32H
123
141
  end
124
142
 
125
143
  ##
126
- # :category: Decoding Binary
127
- #
128
144
  # Decodes a Base32H binary into a string of packed unsigned bytes.
145
+ #
146
+ # @param str [String] the binary to decode
147
+ #
148
+ # @return [String] the decoded binary
129
149
  def decode_bin(str)
130
150
  data = str.chars.reject {|c| decode_digit(c).nil?}
131
151
  extra = data.length % 8
@@ -138,6 +158,8 @@ module Base32H
138
158
  out.pack('C*')
139
159
  end
140
160
 
161
+ # @!endgroup
162
+
141
163
  private
142
164
 
143
165
  def u40_to_bytes(int)
@@ -161,12 +183,20 @@ module Base32H
161
183
  end
162
184
 
163
185
  class Integer
186
+ ##
187
+ # Encodes the integer to its Base32H numeric representation.
188
+ #
189
+ # @return [String] the integer's Base32H representation
164
190
  def to_base32h
165
191
  Base32H.encode(self)
166
192
  end
167
193
  end
168
194
 
169
195
  class String
196
+ ##
197
+ # Encodes the string to its Base32H binary representation.
198
+ #
199
+ # @return [String] the string's Base32H representation
170
200
  def to_base32h
171
201
  Base32H.encode_bin(self)
172
202
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: base32h
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan S. Northrup ("RyNo")
@@ -39,6 +39,7 @@ licenses:
39
39
  metadata:
40
40
  homepage_uri: https://base32h.github.io
41
41
  source_code_uri: https://github.com/base32h/base32h.rb
42
+ documentation_uri: https://rubydoc.info/gems/base32h/Base32H
42
43
  post_install_message:
43
44
  rdoc_options: []
44
45
  require_paths: