Skip to content

Commit b9ba857

Browse files
committed
add Base36 support to Multibase
1 parent 2e61b68 commit b9ba857

6 files changed

Lines changed: 22 additions & 8 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# 5.2.0
2+
3+
## New features
4+
- Multibase support for Base36 (upper and lower)
5+
16
# 5.1.0
27

38
## New features

src/Multibase.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ public static byte[] Decode(ReadOnlySpan<char> text)
4040
MultibaseEncoding.Base32HexLower => Base32.ExtendedHexLower.Decode(rest),
4141
MultibaseEncoding.Base32HexUpper => Base32.ExtendedHex.Decode(rest),
4242
MultibaseEncoding.Base32Z => Base32.ZBase32.Decode(rest),
43+
MultibaseEncoding.Base36Lower => Base36.LowerCase.Decode(rest),
44+
MultibaseEncoding.Base36Upper => Base36.UpperCase.Decode(rest),
4345
MultibaseEncoding.Base45 => Base45.Default.Decode(rest),
4446
MultibaseEncoding.Base58Bitcoin => Base58.Bitcoin.Decode(rest),
4547
MultibaseEncoding.Base58Flickr => Base58.Flickr.Decode(rest),
@@ -79,6 +81,8 @@ public static bool TryDecode(ReadOnlySpan<char> text, Span<byte> bytes, out int
7981
MultibaseEncoding.Base32HexLower => Base32.ExtendedHexLower.TryDecode(rest, bytes, out bytesWritten),
8082
MultibaseEncoding.Base32HexUpper => Base32.ExtendedHex.TryDecode(rest, bytes, out bytesWritten),
8183
MultibaseEncoding.Base32Z => Base32.ZBase32.TryDecode(rest, bytes, out bytesWritten),
84+
MultibaseEncoding.Base36Lower => Base36.LowerCase.TryDecode(rest, bytes, out bytesWritten),
85+
MultibaseEncoding.Base36Upper => Base36.UpperCase.TryDecode(rest, bytes, out bytesWritten),
8286
MultibaseEncoding.Base45 => Base45.Default.TryDecode(rest, bytes, out bytesWritten),
8387
MultibaseEncoding.Base58Bitcoin => Base58.Bitcoin.TryDecode(rest, bytes, out bytesWritten),
8488
MultibaseEncoding.Base58Flickr => Base58.Flickr.TryDecode(rest, bytes, out bytesWritten),
@@ -113,6 +117,8 @@ public static string Encode(ReadOnlySpan<byte> bytes, MultibaseEncoding encoding
113117
MultibaseEncoding.Base32HexLower => Base32.ExtendedHexLower.Encode(bytes),
114118
MultibaseEncoding.Base32HexUpper => Base32.ExtendedHex.Encode(bytes),
115119
MultibaseEncoding.Base32Z => Base32.ZBase32.Encode(bytes),
120+
MultibaseEncoding.Base36Lower => Base36.LowerCase.Encode(bytes),
121+
MultibaseEncoding.Base36Upper => Base36.UpperCase.Encode(bytes),
116122
MultibaseEncoding.Base45 => Base45.Default.Encode(bytes),
117123
MultibaseEncoding.Base58Bitcoin => Base58.Bitcoin.Encode(bytes),
118124
MultibaseEncoding.Base58Flickr => Base58.Flickr.Encode(bytes),

src/MultibaseEncoding.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ public enum MultibaseEncoding
2424

2525
// marked as "draft"
2626
Base32Z = 'h',
27+
Base36Lower = 'k',
28+
Base36Upper = 'K',
2729
Base45 = 'R',
2830

2931
// marked as "experimental"

src/PublicAPI.Unshipped.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ SimpleBase.Base36Alphabet
1212
SimpleBase.Base36Alphabet.Base36Alphabet(string! alphabet) -> void
1313
SimpleBase.DividingCoder<TAlphabet>.DividingCoder(TAlphabet! alphabet) -> void
1414
SimpleBase.MultibaseEncoding.Base256Emoji = 55357 -> SimpleBase.MultibaseEncoding
15+
SimpleBase.MultibaseEncoding.Base36Lower = 107 -> SimpleBase.MultibaseEncoding
16+
SimpleBase.MultibaseEncoding.Base36Upper = 75 -> SimpleBase.MultibaseEncoding
1517
SimpleBase.MultibaseEncoding.Base64Pad = 77 -> SimpleBase.MultibaseEncoding
1618
static SimpleBase.Base256Emoji.Default.get -> SimpleBase.Base256Emoji!
1719
static SimpleBase.Base36.LowerCase.get -> SimpleBase.Base36!

src/SimpleBase.csproj

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,21 +12,20 @@
1212
<AssemblyOriginatorKeyFile>..\SimpleBase.snk</AssemblyOriginatorKeyFile>
1313
<DelaySign>false</DelaySign>
1414

15-
<PackageVersion>5.1.0</PackageVersion>
15+
<PackageVersion>5.2.0</PackageVersion>
1616
<DocumentationFile>SimpleBase.xml</DocumentationFile>
1717
<PackageProjectUrl>https://github.com/ssg/SimpleBase</PackageProjectUrl>
1818
<PackageLicenseExpression>Apache-2.0</PackageLicenseExpression>
1919
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
20-
<PackageTags>base16 base32 base45 base58 base62 base85 ascii85 z85 hexadecimal bitcoin ripple flickr crockford extended hex rfc4648 z-base-32 geohash bech32 rfc1924</PackageTags>
20+
<PackageTags>base16 base32 base36 base45 base58 base62 base85 ascii85 z85 hexadecimal bitcoin ripple flickr crockford extended hex rfc4648 z-base-32 geohash bech32 rfc1924</PackageTags>
2121
<LangVersion>latest</LangVersion>
2222
<Nullable>enable</Nullable>
2323
<PlatformTarget>AnyCPU</PlatformTarget>
2424
<PackageReadmeFile>README.md</PackageReadmeFile>
2525
<PackageReleaseNotes>
2626
<![CDATA[
2727
## New features
28-
- Base36
29-
- Base256Emoji
28+
- Multibase support for Base36 (upper and lower)
3029
]]>
3130
</PackageReleaseNotes>
3231
</PropertyGroup>

test/Multibase/MultibaseTest.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ You may obtain a copy of the License at
1414
limitations under the License.
1515
*/
1616
using System;
17-
using System.Buffers.Text;
18-
using System.Runtime.Intrinsics.X86;
1917
using System.Text;
2018
using NUnit.Framework;
2119
using SimpleBase;
@@ -53,6 +51,8 @@ public void Encode_InvalidEncoding_ThrowsArgumentException()
5351
[MultibaseEncoding.Base32Upper, "BKNJUOICXIFJSASCFKJCSAIJBYKV4HDODT3B36"],
5452
[MultibaseEncoding.Base32HexLower, "vad9ke82n859i0i25a92i0891oals73e3jr1ru"],
5553
[MultibaseEncoding.Base32HexUpper, "VAD9KE82N859I0I25A92I0891OALS73E3JR1RU"],
54+
[MultibaseEncoding.Base36Lower, "k2p81m7y66k71a7teel1hfa4ldp6bneq0hj9b"],
55+
[MultibaseEncoding.Base36Upper, "K2P81M7Y66K71A7TEEL1HFA4LDP6BNEQ0HJ9B"],
5656
[MultibaseEncoding.Base32Z, "hkpjwqenzefj1y1nfkjn1yejbakih8dqdu5b56"],
5757
[MultibaseEncoding.Base45, "R1OAS:8H1B+MA6691IAZ242C46WLL-H83KB4"],
5858
[MultibaseEncoding.Base58Flickr, "Z2HPxwKnQi8s2ugkrzPrrR6nyDEpMhoe6"],
@@ -78,8 +78,8 @@ public void Encode_InvalidEncoding_ThrowsArgumentException()
7878
[MultibaseEncoding.Base32HexLower, "vf5in683dc5n6i811"],
7979
[MultibaseEncoding.Base32HexUpper, "VF5IN683DC5N6I811"],
8080
[MultibaseEncoding.Base32Z, "hxf1zgedpcfzg1ebb"],
81-
//[base36, "k2lcpzo5yikidynfl"],
82-
//[base36upper, "K2LCPZO5YIKIDYNFL"],
81+
[MultibaseEncoding.Base36Lower, "k2lcpzo5yikidynfl"],
82+
[MultibaseEncoding.Base36Upper, "K2LCPZO5YIKIDYNFL"],
8383
[MultibaseEncoding.Base58Flickr, "Z7Pznk19XTTzBtx"],
8484
[MultibaseEncoding.Base58Bitcoin, "z7paNL19xttacUY"],
8585
[MultibaseEncoding.Base64, "meWVzIG1hbmkgIQ"],

0 commit comments

Comments
 (0)