base32-url 0.5 → 0.6.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.
- checksums.yaml +4 -4
- data/.github/workflows/build.yml +38 -0
- data/.gitignore +1 -0
- data/README.md +4 -1
- data/Rakefile +1 -2
- data/base32-url.gemspec +21 -18
- data/lib/base32/url.rb +18 -17
- data/lib/base32/version.rb +3 -1
- data/lib/base32-url.rb +2 -0
- data/sonar-project.properties +11 -0
- data/test/test_base32_url.rb +38 -34
- metadata +96 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6700c1c53464c4318f6361ebe22cf4276c925f24bf92cc6fc841e2075c502e6a
|
4
|
+
data.tar.gz: 5b58a804226b9714abde687042e207d8d00a10ed0859c716ccefa1c350a7fd69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa905b9b15aafdeb4ef156da982952e613d397b0f4dda8d5a1145eaeda61b461deeba2410f850564d20246ad5902c84d02d330602d1a30d7b9f9f0ede5b785c4
|
7
|
+
data.tar.gz: 1831d2538ff6892222341b9082db32ee93456e9385a0521db10a2549ef50eb7940e2cd57bcce3ae82c98518c010e6508c68994ce325699c6ab38293d45eb7780
|
@@ -0,0 +1,38 @@
|
|
1
|
+
name: Build
|
2
|
+
on:
|
3
|
+
push:
|
4
|
+
branches:
|
5
|
+
- master
|
6
|
+
pull_request:
|
7
|
+
types: [opened, synchronize, reopened]
|
8
|
+
jobs:
|
9
|
+
sonarcloud:
|
10
|
+
name: SonarCloud
|
11
|
+
runs-on: ubuntu-latest
|
12
|
+
steps:
|
13
|
+
- uses: actions/checkout@v3
|
14
|
+
with:
|
15
|
+
fetch-depth: 0
|
16
|
+
- name: Set up Ruby 3.1
|
17
|
+
uses: ruby/setup-ruby@v1
|
18
|
+
with:
|
19
|
+
ruby-version: 3.1
|
20
|
+
- name: Build and test
|
21
|
+
run: |
|
22
|
+
gem install bundler
|
23
|
+
bundle install
|
24
|
+
bundle exec rake test
|
25
|
+
- name: fix code coverage paths
|
26
|
+
working-directory: ./coverage
|
27
|
+
run: |
|
28
|
+
sed -i 's@'$GITHUB_WORKSPACE'@/github/workspace/@g' coverage.json
|
29
|
+
- name: Upload coverage report
|
30
|
+
uses: actions/upload-artifact@v3
|
31
|
+
with:
|
32
|
+
name: coverage-report
|
33
|
+
path: coverage/coverage.json
|
34
|
+
- name: SonarCloud Scan
|
35
|
+
uses: SonarSource/sonarcloud-github-action@master
|
36
|
+
env:
|
37
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
38
|
+
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
+
[](https://github.com/front-matter/base32-url/actions/workflows/build.yml)
|
2
|
+
[](https://sonarcloud.io/summary/new_code?id=front-matter_base32-url)
|
3
|
+
[](https://sonarcloud.io/summary/new_code?id=front-matter_base32-url)
|
1
4
|
[](https://badge.fury.io/rb/base32-url)
|
2
|
-
[](https://travis-ci.org/datacite/base32-url)
|
3
5
|
|
4
6
|
An implementation of Douglas Crockfords Base32-Encoding in Ruby, with two modifications to make
|
5
7
|
the resulting strings more URL friendly:
|
@@ -18,6 +20,7 @@ $ gem install base32-url
|
|
18
20
|
## Changes
|
19
21
|
|
20
22
|
```
|
23
|
+
0.6.0 - support Ruby versions beyond 2.x
|
21
24
|
0.5.0 - use mod 97-10 (ISO 7064) to calculate checksum
|
22
25
|
0.3.0 - encode into lower case characters, use * ~ _ ^ u for checksum
|
23
26
|
0.2.0 - added optional checksum
|
data/Rakefile
CHANGED
data/base32-url.gemspec
CHANGED
@@ -1,26 +1,29 @@
|
|
1
|
-
require
|
2
|
-
require File.expand_path(
|
1
|
+
require 'date'
|
2
|
+
require File.expand_path('lib/base32/version', __dir__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
|
-
s.authors =
|
6
|
-
s.email =
|
7
|
-
s.name =
|
8
|
-
s.homepage =
|
9
|
-
s.summary =
|
5
|
+
s.authors = 'Martin Fenner'
|
6
|
+
s.email = 'martin@front-matter.io'
|
7
|
+
s.name = 'base32-url'
|
8
|
+
s.homepage = 'https://github.com/front-matter/base32-url'
|
9
|
+
s.summary = '32-symbol notation for expressing numbers in a form that can be conveniently and accurately transmitted between humans'
|
10
10
|
s.date = Date.today
|
11
|
-
s.description =
|
12
|
-
s.require_paths = [
|
11
|
+
s.description = '32-symbol notation for expressing numbers in a form that can be conveniently and accurately transmitted between humans. URL-friendly version of the base32-crockford gem.'
|
12
|
+
s.require_paths = ['lib']
|
13
13
|
s.version = Base32::Url::VERSION
|
14
|
-
s.extra_rdoc_files = [
|
15
|
-
s.license
|
16
|
-
s.required_ruby_version = '
|
14
|
+
s.extra_rdoc_files = ['README.md']
|
15
|
+
s.license = 'MIT'
|
16
|
+
s.required_ruby_version = '>= 2.6.0'
|
17
17
|
|
18
18
|
# Declary dependencies here, rather than in the Gemfile
|
19
|
-
s.add_development_dependency 'bundler', '
|
20
|
-
s.add_development_dependency 'rake'
|
21
|
-
s.add_development_dependency '
|
19
|
+
s.add_development_dependency 'bundler', '>= 1.11', "< 3"
|
20
|
+
s.add_development_dependency 'rake', '>= 11.3', "< 14"
|
21
|
+
s.add_development_dependency 'rubocop', '~> 1.36'
|
22
|
+
s.add_development_dependency 'rubocop-rake', '~> 0.6.0'
|
23
|
+
s.add_development_dependency 'simplecov', '0.22.0'
|
24
|
+
s.add_development_dependency 'simplecov_json_formatter', '~> 0.1.4'
|
25
|
+
s.add_development_dependency 'test-unit', '~> 3.2', '>= 3.2.3'
|
22
26
|
|
23
|
-
s.
|
24
|
-
s.
|
25
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
27
|
+
s.files = `git ls-files`.split($/)
|
28
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
26
29
|
end
|
data/lib/base32/url.rb
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
#
|
3
4
|
# (c) 2008, Levin Alexander <http://levinalex.net>
|
4
5
|
#
|
5
6
|
# This file is released under the same license as ruby.
|
6
7
|
|
7
|
-
require 'enumerator'
|
8
|
-
|
9
8
|
module Base32
|
10
9
|
end
|
11
10
|
|
@@ -38,12 +37,11 @@ end
|
|
38
37
|
#
|
39
38
|
class Base32::URL
|
40
39
|
ENCODE_CHARS =
|
41
|
-
%w
|
40
|
+
%w[0 1 2 3 4 5 6 7 8 9 a b c d e f g h j k m n p q r s t v w x y z ?].freeze
|
42
41
|
|
43
|
-
DECODE_MAP = ENCODE_CHARS.to_enum(:each_with_index).
|
42
|
+
DECODE_MAP = ENCODE_CHARS.to_enum(:each_with_index).each_with_object({}) do |(c, i), hsh|
|
44
43
|
hsh[c] = i
|
45
|
-
|
46
|
-
end.merge({'i' => 1, 'l' => 1, 'o' => 0})
|
44
|
+
end.merge({ 'i' => 1, 'l' => 1, 'o' => 0 })
|
47
45
|
|
48
46
|
# encodes an integer into a string
|
49
47
|
#
|
@@ -61,7 +59,7 @@ class Base32::URL
|
|
61
59
|
#
|
62
60
|
def self.encode(number, opts = {})
|
63
61
|
# verify options
|
64
|
-
raise ArgumentError unless
|
62
|
+
raise ArgumentError unless opts.keys - %i[length split checksum] == []
|
65
63
|
|
66
64
|
str = number.to_s(2).reverse.scan(/.{1,5}/).map do |bits|
|
67
65
|
ENCODE_CHARS[bits.reverse.to_i(2)]
|
@@ -69,15 +67,15 @@ class Base32::URL
|
|
69
67
|
|
70
68
|
if opts[:checksum]
|
71
69
|
remainder = 98 - ((number * 100) % 97)
|
72
|
-
str +=
|
70
|
+
str += format('%02d', remainder)
|
73
71
|
end
|
74
72
|
|
75
73
|
str = str.rjust(opts[:length], '0') if opts[:length]
|
76
74
|
|
77
75
|
if opts[:split]
|
78
76
|
str = str.reverse
|
79
|
-
str = str.scan(/.{1,#{opts[:split]}}/).map
|
80
|
-
str = str.reverse.join(
|
77
|
+
str = str.scan(/.{1,#{opts[:split]}}/).map(&:reverse)
|
78
|
+
str = str.reverse.join('-')
|
81
79
|
end
|
82
80
|
|
83
81
|
str
|
@@ -99,11 +97,14 @@ class Base32::URL
|
|
99
97
|
# decoded, or if checksum option is used and checksum is incorrect
|
100
98
|
|
101
99
|
def self.decode(string, opts = {})
|
102
|
-
|
100
|
+
if opts[:checksum]
|
101
|
+
checksum = string[-2..].to_i
|
102
|
+
string = string[0..-3]
|
103
|
+
end
|
103
104
|
|
104
|
-
number = clean(string).split(//).map
|
105
|
+
number = clean(string).split(//).map do |char|
|
105
106
|
DECODE_MAP[char] or return nil
|
106
|
-
|
107
|
+
end.inject(0) { |result, val| (result << 5) + val }
|
107
108
|
|
108
109
|
if opts[:checksum]
|
109
110
|
remainder = 98 - ((number * 100) % 97)
|
@@ -114,7 +115,7 @@ class Base32::URL
|
|
114
115
|
end
|
115
116
|
|
116
117
|
# same as decode, but raises ArgumentError when the string can't be decoded
|
117
|
-
def self.decode!(string,
|
118
|
+
def self.decode!(string, _opts = {})
|
118
119
|
decode(string) or raise ArgumentError
|
119
120
|
end
|
120
121
|
|
@@ -142,12 +143,12 @@ class Base32::URL
|
|
142
143
|
# decoded
|
143
144
|
#
|
144
145
|
def self.valid?(string, opts = {})
|
145
|
-
|
146
|
+
(normalize(string, opts) !~ /\?/)
|
146
147
|
end
|
147
148
|
|
148
149
|
class << self
|
149
150
|
def clean(string)
|
150
|
-
string.gsub(/-/,'').downcase
|
151
|
+
string.gsub(/-/, '').downcase
|
151
152
|
end
|
152
153
|
private :clean
|
153
154
|
end
|
data/lib/base32/version.rb
CHANGED
data/lib/base32-url.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
sonar.organization=front-matter
|
2
|
+
sonar.projectKey=front-matter_base32-url
|
3
|
+
|
4
|
+
# This is the name and version displayed in the SonarCloud UI.
|
5
|
+
sonar.projectName=base32-url
|
6
|
+
#sonar.projectVersion=1.0
|
7
|
+
|
8
|
+
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
|
9
|
+
sonar.sources=.
|
10
|
+
|
11
|
+
sonar.ruby.coverage.reportPaths=coverage/coverage.json
|
data/test/test_base32_url.rb
CHANGED
@@ -1,13 +1,17 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'simplecov'
|
4
|
+
require 'simplecov_json_formatter'
|
5
|
+
SimpleCov.formatter = SimpleCov::Formatter::JSONFormatter
|
6
|
+
SimpleCov.start
|
2
7
|
|
3
8
|
require 'test/unit'
|
4
9
|
require 'base32/url'
|
5
10
|
|
6
11
|
class TestBase32Url < Test::Unit::TestCase
|
7
|
-
|
8
12
|
def test_encoding_and_decoding_single_chars
|
9
13
|
from = (0..31).to_a
|
10
|
-
to = %w
|
14
|
+
to = %w[0 1 2 3 4 5 6 7 8 9 a b c d e f g h j k m n p q r s t v w x y z]
|
11
15
|
|
12
16
|
from.zip(to) do |symbol_value, encode_symbol|
|
13
17
|
assert_equal encode_symbol, Base32::URL.encode(symbol_value)
|
@@ -16,22 +20,22 @@ class TestBase32Url < Test::Unit::TestCase
|
|
16
20
|
end
|
17
21
|
|
18
22
|
def test_encoding_larger_numbers
|
19
|
-
assert_equal(
|
20
|
-
assert_equal(
|
23
|
+
assert_equal('10', Base32::URL.encode(32))
|
24
|
+
assert_equal('16j', Base32::URL.encode(1234))
|
21
25
|
end
|
22
26
|
|
23
27
|
def test_decoding_strings
|
24
|
-
assert_equal(1234, Base32::URL.decode(
|
28
|
+
assert_equal(1234, Base32::URL.decode('16j'))
|
25
29
|
end
|
26
30
|
|
27
31
|
def test_decoding_normalizes_symbols
|
28
32
|
assert_equal Base32::URL.decode('11100110'),
|
29
|
-
|
33
|
+
Base32::URL.decode('IL1O0ilo')
|
30
34
|
end
|
31
35
|
|
32
36
|
def test_decoding_lowercase
|
33
|
-
assert_equal Base32::URL.decode(
|
34
|
-
|
37
|
+
assert_equal Base32::URL.decode('abcdefghijklmnopqrstvwxyz'),
|
38
|
+
Base32::URL.decode('ABCDEFGHIJKLMNOPQRSTVWXYZ')
|
35
39
|
end
|
36
40
|
|
37
41
|
def test_decoding_invalid_strings
|
@@ -40,58 +44,58 @@ class TestBase32Url < Test::Unit::TestCase
|
|
40
44
|
end
|
41
45
|
|
42
46
|
def test_decode_should_ignore_hyphens
|
43
|
-
assert_equal 1234, Base32::URL.decode(
|
47
|
+
assert_equal 1234, Base32::URL.decode('1-6-j')
|
44
48
|
end
|
45
49
|
|
46
50
|
def test_normalize
|
47
|
-
assert_equal
|
48
|
-
assert_equal
|
49
|
-
assert_equal
|
51
|
+
assert_equal 'he110w0r1d', Base32::URL.normalize('hello-world')
|
52
|
+
assert_equal 'he110w0r1d', Base32::URL.normalize('HELLO-WORLD')
|
53
|
+
assert_equal 'b?123', Base32::URL.normalize('BU-123')
|
50
54
|
end
|
51
55
|
|
52
56
|
def test_normalize_with_checksum
|
53
|
-
assert_equal
|
54
|
-
assert_equal
|
57
|
+
assert_equal 'b?1223', Base32::URL.normalize('BU-123', checksum: true)
|
58
|
+
assert_equal 'b1223', Base32::URL.normalize('B123', checksum: true)
|
55
59
|
end
|
56
60
|
|
57
61
|
def test_valid
|
58
|
-
assert_equal true, Base32::URL.valid?(
|
59
|
-
assert_equal false, Base32::URL.valid?(
|
62
|
+
assert_equal true, Base32::URL.valid?('hello-world')
|
63
|
+
assert_equal false, Base32::URL.valid?('BU-123')
|
60
64
|
end
|
61
65
|
|
62
66
|
def test_valid_with_checksum
|
63
|
-
assert_equal true, Base32::URL.valid?(
|
64
|
-
assert_equal false, Base32::URL.valid?(
|
67
|
+
assert_equal true, Base32::URL.valid?('b123u', checksum: true)
|
68
|
+
assert_equal false, Base32::URL.valid?('bu-123', checksum: true)
|
65
69
|
end
|
66
70
|
|
67
71
|
def test_length_and_hyphenization
|
68
|
-
assert_equal
|
69
|
-
assert_equal
|
70
|
-
|
71
|
-
assert_equal
|
72
|
-
|
72
|
+
assert_equal '0016j', Base32::URL.encode(1234, length: 5)
|
73
|
+
assert_equal '0-01-6j',
|
74
|
+
Base32::URL.encode(1234, length: 5, split: 2)
|
75
|
+
assert_equal '00-010',
|
76
|
+
Base32::URL.encode(32, length: 5, split: 3)
|
73
77
|
end
|
74
78
|
|
75
79
|
def test_encoding_checksum
|
76
|
-
assert_equal
|
77
|
-
|
78
|
-
assert_equal
|
79
|
-
|
80
|
-
assert_equal
|
81
|
-
|
80
|
+
assert_equal '16j82',
|
81
|
+
Base32::URL.encode(1234, checksum: true)
|
82
|
+
assert_equal '016j82',
|
83
|
+
Base32::URL.encode(1234, length: 6, checksum: true)
|
84
|
+
assert_equal '01-6j-82',
|
85
|
+
Base32::URL.encode(1234, length: 6, split: 2, checksum: true)
|
82
86
|
end
|
83
87
|
|
84
88
|
def test_decoding_checksum
|
85
89
|
assert_equal 1234,
|
86
|
-
|
90
|
+
Base32::URL.decode('16j82', checksum: true)
|
87
91
|
assert_equal 1234,
|
88
|
-
|
92
|
+
Base32::URL.decode('016j82', length: 6, checksum: true)
|
89
93
|
assert_equal 1234,
|
90
|
-
|
94
|
+
Base32::URL.decode('01-6j-82', length: 6, split: 2, checksum: true)
|
91
95
|
end
|
92
96
|
|
93
97
|
def test_decoding_invalid_checksum
|
94
98
|
assert_equal nil,
|
95
|
-
|
99
|
+
Base32::URL.decode('16j44', checksum: true)
|
96
100
|
end
|
97
101
|
end
|
metadata
CHANGED
@@ -1,48 +1,119 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: base32-url
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Fenner
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.11'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '3'
|
20
23
|
type: :development
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.11'
|
30
|
+
- - "<"
|
25
31
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
32
|
+
version: '3'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: rake
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|
30
36
|
requirements:
|
31
37
|
- - ">="
|
32
38
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
39
|
+
version: '11.3'
|
40
|
+
- - "<"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '14'
|
34
43
|
type: :development
|
35
44
|
prerelease: false
|
36
45
|
version_requirements: !ruby/object:Gem::Requirement
|
37
46
|
requirements:
|
38
47
|
- - ">="
|
39
48
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
49
|
+
version: '11.3'
|
50
|
+
- - "<"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '14'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: rubocop
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '1.36'
|
60
|
+
type: :development
|
61
|
+
prerelease: false
|
62
|
+
version_requirements: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - "~>"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '1.36'
|
67
|
+
- !ruby/object:Gem::Dependency
|
68
|
+
name: rubocop-rake
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - "~>"
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 0.6.0
|
74
|
+
type: :development
|
75
|
+
prerelease: false
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - "~>"
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 0.6.0
|
81
|
+
- !ruby/object:Gem::Dependency
|
82
|
+
name: simplecov
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - '='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: 0.22.0
|
88
|
+
type: :development
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
91
|
+
requirements:
|
92
|
+
- - '='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 0.22.0
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: simplecov_json_formatter
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - "~>"
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 0.1.4
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - "~>"
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: 0.1.4
|
41
109
|
- !ruby/object:Gem::Dependency
|
42
110
|
name: test-unit
|
43
111
|
requirement: !ruby/object:Gem::Requirement
|
44
112
|
requirements:
|
45
113
|
- - "~>"
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '3.2'
|
116
|
+
- - ">="
|
46
117
|
- !ruby/object:Gem::Version
|
47
118
|
version: 3.2.3
|
48
119
|
type: :development
|
@@ -50,17 +121,21 @@ dependencies:
|
|
50
121
|
version_requirements: !ruby/object:Gem::Requirement
|
51
122
|
requirements:
|
52
123
|
- - "~>"
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '3.2'
|
126
|
+
- - ">="
|
53
127
|
- !ruby/object:Gem::Version
|
54
128
|
version: 3.2.3
|
55
129
|
description: 32-symbol notation for expressing numbers in a form that can be conveniently
|
56
130
|
and accurately transmitted between humans. URL-friendly version of the base32-crockford
|
57
131
|
gem.
|
58
|
-
email:
|
132
|
+
email: martin@front-matter.io
|
59
133
|
executables: []
|
60
134
|
extensions: []
|
61
135
|
extra_rdoc_files:
|
62
136
|
- README.md
|
63
137
|
files:
|
138
|
+
- ".github/workflows/build.yml"
|
64
139
|
- ".gitignore"
|
65
140
|
- ".travis.yml"
|
66
141
|
- Gemfile
|
@@ -71,29 +146,31 @@ files:
|
|
71
146
|
- lib/base32-url.rb
|
72
147
|
- lib/base32/url.rb
|
73
148
|
- lib/base32/version.rb
|
149
|
+
- sonar-project.properties
|
74
150
|
- test/test_base32_url.rb
|
75
|
-
homepage: https://github.com/
|
151
|
+
homepage: https://github.com/front-matter/base32-url
|
76
152
|
licenses:
|
77
153
|
- MIT
|
78
154
|
metadata: {}
|
79
|
-
post_install_message:
|
155
|
+
post_install_message:
|
80
156
|
rdoc_options: []
|
81
157
|
require_paths:
|
82
158
|
- lib
|
83
159
|
required_ruby_version: !ruby/object:Gem::Requirement
|
84
160
|
requirements:
|
85
|
-
- - "
|
161
|
+
- - ">="
|
86
162
|
- !ruby/object:Gem::Version
|
87
|
-
version:
|
163
|
+
version: 2.6.0
|
88
164
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
165
|
requirements:
|
90
166
|
- - ">="
|
91
167
|
- !ruby/object:Gem::Version
|
92
168
|
version: '0'
|
93
169
|
requirements: []
|
94
|
-
|
95
|
-
|
96
|
-
signing_key:
|
170
|
+
rubygems_version: 3.4.8
|
171
|
+
signing_key:
|
97
172
|
specification_version: 4
|
98
|
-
summary:
|
99
|
-
|
173
|
+
summary: 32-symbol notation for expressing numbers in a form that can be conveniently
|
174
|
+
and accurately transmitted between humans
|
175
|
+
test_files:
|
176
|
+
- test/test_base32_url.rb
|