multibases 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +9 -9
- data/CHANGELOG.md +10 -0
- data/README.md +13 -5
- data/Rakefile +21 -0
- data/bin/setup +8 -8
- data/lib/multibases/registry.rb +12 -0
- data/lib/multibases/version.rb +1 -1
- data/lib/multibases.rb +0 -2
- data/lib/table.csv +23 -0
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e2b0dd76dacf9936bc730a2568740868ffd7da45d0d341bfbde1e7884ccfd162
|
4
|
+
data.tar.gz: b494e77003851e5cc216a163d2b75ef443a05609789de4f4070ed3fa2cc3d3cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c15a0d0e856d94c6edf60c2e2a83d722c2c67527cd1c07b28bb917cb5e73572e834d3662352c3b0afe895e0109fb11d3848194a66477ca28565dabaa99ef925
|
7
|
+
data.tar.gz: 61b9616e4627224d15d76f04c75e621f16059de0128cd2a4f4a7b49cf62513200ef5c418495526b2cb65eebb1fc271cdb27620156c0ce388fa4a550972be4d38
|
data/.gitignore
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
/.bundle/
|
2
|
-
/.yardoc
|
3
|
-
/_yardoc/
|
4
|
-
/coverage/
|
5
|
-
/doc/
|
6
|
-
/pkg/
|
7
|
-
/spec/reports/
|
8
|
-
/tmp/
|
9
|
-
Gemfile.lock
|
1
|
+
/.bundle/
|
2
|
+
/.yardoc
|
3
|
+
/_yardoc/
|
4
|
+
/coverage/
|
5
|
+
/doc/
|
6
|
+
/pkg/
|
7
|
+
/spec/reports/
|
8
|
+
/tmp/
|
9
|
+
Gemfile.lock
|
data/CHANGELOG.md
ADDED
data/README.md
CHANGED
@@ -1,9 +1,14 @@
|
|
1
1
|
# Multibases
|
2
2
|
|
3
|
-
[![Build Status
|
4
|
-
[![Gem Version](https://badge.fury.io/rb/
|
5
|
-
[![MIT license](https://img.shields.io/badge/license-MIT-brightgreen.svg)]
|
6
|
-
[![Maintainability](https://api.codeclimate.com/v1/badges/
|
3
|
+
[![Build Status](https://travis-ci.com/SleeplessByte/ruby-multibase.svg?branch=master)][shield-link-travis]
|
4
|
+
[![Gem Version](https://badge.fury.io/rb/multibases.svg)][shield-link-gem]
|
5
|
+
[![MIT license](https://img.shields.io/badge/license-MIT-brightgreen.svg)][shield-link-license]
|
6
|
+
[![Maintainability](https://api.codeclimate.com/v1/badges/1253cc22b664d27d4052/maintainability)][shield-link-codeclimate]
|
7
|
+
|
8
|
+
[shield-link-travis]: https://travis-ci.com/SleeplessByte/ruby-multibase
|
9
|
+
[shield-link-gem]: https://badge.fury.io/rb/multibases
|
10
|
+
[shield-link-license]: http://opensource.org/licenses/MIT
|
11
|
+
[shield-link-codeclimate]: https://codeclimate.com/github/SleeplessByte/ruby-multibase/maintainability
|
7
12
|
|
8
13
|
> Multibase is a protocol for disambiguating the encoding of base-encoded
|
9
14
|
> (e.g., base32, base64, base58, etc.) binary appearing in text.
|
@@ -283,6 +288,7 @@ expected == Multibases::Base16.encode(Multibases::ByteArray.new("abc".bytes))
|
|
283
288
|
## Related
|
284
289
|
|
285
290
|
- [`multiformats/multibase`][git-multibase]: the spec repository
|
291
|
+
- [`multiformats/ruby-multicodec`][git-ruby-multicodec]: the ruby implementation of [`multiformats/multicodec`][git-multicodec]
|
286
292
|
- [`multiformats/ruby-multihash`][git-ruby-multihash]: the ruby implementation of [`multiformats/multihash`][git-multihash]
|
287
293
|
|
288
294
|
## Development
|
@@ -298,7 +304,7 @@ push git commits and tags, and push the `.gem` file to [rubygems.org][web-rubyge
|
|
298
304
|
|
299
305
|
## Contributing
|
300
306
|
|
301
|
-
Bug reports and pull requests are welcome on GitHub at [SleeplessByte/
|
307
|
+
Bug reports and pull requests are welcome on GitHub at [SleeplessByte/ruby-multibase][git-self].
|
302
308
|
This project is intended to be a safe, welcoming space for collaboration, and
|
303
309
|
contributors are expected to adhere to the [Contributor Covenant][web-coc] code
|
304
310
|
of conduct.
|
@@ -316,6 +322,8 @@ issue trackers, chat rooms and mailing lists is expected to follow the
|
|
316
322
|
[spec]: https://github.com/multiformats/multibase
|
317
323
|
[git-self-coc]: https://github.com/SleeplessByte/ruby-multibase/blob/master/CODE_OF_CONDUCT.md
|
318
324
|
[git-self]: https://github.com/SleeplessByte/ruby-multibase
|
325
|
+
[git-ruby-multicodec]: https://github.com/SleeplessByte/ruby-multicodec
|
326
|
+
[git-multicodec]: https://github.com/multiformats/multicodec
|
319
327
|
[git-multibase]: https://github.com/multiformats/multibase
|
320
328
|
[git-multibase-table]: https://github.com/multiformats/multibase/blob/master/multibase.csv
|
321
329
|
[git-ruby-multihash]: https://github.com/multiformats/ruby-multihash
|
data/Rakefile
CHANGED
@@ -9,4 +9,25 @@ Rake::TestTask.new(:test) do |t|
|
|
9
9
|
t.test_files = FileList["test/**/*_test.rb"]
|
10
10
|
end
|
11
11
|
|
12
|
+
Rake::Task.define_task(:update) do |t|
|
13
|
+
require 'open-uri'
|
14
|
+
|
15
|
+
SOURCE_FILE = 'https://raw.githubusercontent.com/multiformats/multibase/master/multibase.csv'
|
16
|
+
SPEC_FILE_FORMAT = 'https://raw.githubusercontent.com/multiformats/multibase/master/tests/test%<index>d.csv'
|
17
|
+
|
18
|
+
File.open(File.join(__dir__, 'lib', 'table.csv'), "wb") do |saved_file|
|
19
|
+
open(SOURCE_FILE, "rb") do |read_file|
|
20
|
+
saved_file.write(read_file.read)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
(1..6).each do |index|
|
25
|
+
File.open(File.join(__dir__, 'test', 'fixtures', format('test%<index>s.csv', index: index)), "wb") do |saved_file|
|
26
|
+
open(format(SPEC_FILE_FORMAT, index: index), "rb") do |read_file|
|
27
|
+
saved_file.write(read_file.read)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
12
33
|
task :default => :test
|
data/bin/setup
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
set -euo pipefail
|
3
|
-
IFS=$'\n\t'
|
4
|
-
set -vx
|
5
|
-
|
6
|
-
bundle install
|
7
|
-
|
8
|
-
# Do any other automated setup that you need to do here
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
set -euo pipefail
|
3
|
+
IFS=$'\n\t'
|
4
|
+
set -vx
|
5
|
+
|
6
|
+
bundle install
|
7
|
+
|
8
|
+
# Do any other automated setup that you need to do here
|
data/lib/multibases/registry.rb
CHANGED
@@ -23,6 +23,10 @@ module Multibases
|
|
23
23
|
|
24
24
|
module_function
|
25
25
|
|
26
|
+
def [](entry)
|
27
|
+
find_by(code: entry, encoding: entry)
|
28
|
+
end
|
29
|
+
|
26
30
|
def implement(encoding, code, implementation = nil, alphabet = nil)
|
27
31
|
Multibases::IMPLEMENTATIONS[encoding] = Registration.new(
|
28
32
|
code,
|
@@ -45,6 +49,14 @@ module Multibases
|
|
45
49
|
end
|
46
50
|
end
|
47
51
|
|
52
|
+
def codes
|
53
|
+
Multicodecs::REGISTRATIONS.values.map(&:code)
|
54
|
+
end
|
55
|
+
|
56
|
+
def names
|
57
|
+
Multicodecs::REGISTRATIONS.keys
|
58
|
+
end
|
59
|
+
|
48
60
|
def multibase_version(multibase_semver = nil)
|
49
61
|
return @multibase_version if multibase_semver.nil?
|
50
62
|
|
data/lib/multibases/version.rb
CHANGED
data/lib/multibases.rb
CHANGED
data/lib/table.csv
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
encoding, code, description
|
2
|
+
identity, 0x00, 8-bit binary (encoder and decoder keeps data unmodified)
|
3
|
+
base1, 1, unary (11111)
|
4
|
+
base2, 0, binary (01010101)
|
5
|
+
base8, 7, octal
|
6
|
+
base10, 9, decimal
|
7
|
+
base16, f, hexadecimal
|
8
|
+
base16upper, F, hexadecimal
|
9
|
+
base32hex, v, rfc4648 no padding - highest char
|
10
|
+
base32hexupper, V, rfc4648 no padding - highest char
|
11
|
+
base32hexpad, t, rfc4648 with padding
|
12
|
+
base32hexpadupper, T, rfc4648 with padding
|
13
|
+
base32, b, rfc4648 no padding
|
14
|
+
base32upper, B, rfc4648 no padding
|
15
|
+
base32pad, c, rfc4648 with padding
|
16
|
+
base32padupper, C, rfc4648 with padding
|
17
|
+
base32z, h, z-base-32 (used by Tahoe-LAFS)
|
18
|
+
base58flickr, Z, base58 flicker
|
19
|
+
base58btc, z, base58 bitcoin
|
20
|
+
base64, m, rfc4648 no padding
|
21
|
+
base64pad, M, rfc4648 with padding - MIME encoding
|
22
|
+
base64url, u, rfc4648 no padding
|
23
|
+
base64urlpad, U, rfc4648 with padding
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: multibases
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derk-Jan Karrenbeld
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-06-
|
11
|
+
date: 2019-06-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -67,6 +67,7 @@ files:
|
|
67
67
|
- ".gitignore"
|
68
68
|
- ".rubocop.yml"
|
69
69
|
- ".travis.yml"
|
70
|
+
- CHANGELOG.md
|
70
71
|
- Gemfile
|
71
72
|
- README.md
|
72
73
|
- Rakefile
|
@@ -83,6 +84,7 @@ files:
|
|
83
84
|
- lib/multibases/ord_table.rb
|
84
85
|
- lib/multibases/registry.rb
|
85
86
|
- lib/multibases/version.rb
|
87
|
+
- lib/table.csv
|
86
88
|
- multibases.gemspec
|
87
89
|
homepage: https://github.com/SleeplessByte/ruby-multibase
|
88
90
|
licenses: []
|
@@ -105,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
105
107
|
- !ruby/object:Gem::Version
|
106
108
|
version: '0'
|
107
109
|
requirements: []
|
108
|
-
rubygems_version: 3.0.
|
110
|
+
rubygems_version: 3.0.3
|
109
111
|
signing_key:
|
110
112
|
specification_version: 4
|
111
113
|
summary: Ruby implementation of the multibase specification
|