@@ -92,6 +92,9 @@ defmodule Base do
92
92
93
93
"""
94
94
95
+ @ type encode_case :: :upper | :lower
96
+ @ type decode_case :: :upper | :lower | :mixed
97
+
95
98
b16_alphabet = '0123456789ABCDEF'
96
99
b64_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
97
100
b64url_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'
@@ -267,7 +270,7 @@ defmodule Base do
267
270
"666f6f626172"
268
271
269
272
"""
270
- @ spec encode16 ( binary , keyword ) :: binary
273
+ @ spec encode16 ( binary , case: encode_case ) :: binary
271
274
def encode16 ( data , opts \\ [ ] ) when is_binary ( data ) do
272
275
case = Keyword . get ( opts , :case , :upper )
273
276
do_encode16 ( case , data )
@@ -300,7 +303,7 @@ defmodule Base do
300
303
{:ok, "foobar"}
301
304
302
305
"""
303
- @ spec decode16 ( binary , keyword ) :: { :ok , binary } | :error
306
+ @ spec decode16 ( binary , case: decode_case ) :: { :ok , binary } | :error
304
307
def decode16 ( string , opts \\ [ ] ) do
305
308
{ :ok , decode16! ( string , opts ) }
306
309
rescue
@@ -337,7 +340,7 @@ defmodule Base do
337
340
"foobar"
338
341
339
342
"""
340
- @ spec decode16! ( binary , keyword ) :: binary
343
+ @ spec decode16! ( binary , case: encode_case ) :: binary
341
344
def decode16! ( string , opts \\ [ ] )
342
345
343
346
def decode16! ( string , opts ) when is_binary ( string ) and rem ( byte_size ( string ) , 2 ) == 0 do
@@ -367,7 +370,7 @@ defmodule Base do
367
370
"Zm9vYg"
368
371
369
372
"""
370
- @ spec encode64 ( binary , keyword ) :: binary
373
+ @ spec encode64 ( binary , padding: boolean ) :: binary
371
374
def encode64 ( data , opts \\ [ ] ) when is_binary ( data ) do
372
375
pad? = Keyword . get ( opts , :padding , true )
373
376
do_encode64 ( data , pad? )
@@ -397,7 +400,7 @@ defmodule Base do
397
400
{:ok, "foob"}
398
401
399
402
"""
400
- @ spec decode64 ( binary , keyword ) :: { :ok , binary } | :error
403
+ @ spec decode64 ( binary , ignore: :whitespace , padding: boolean ) :: { :ok , binary } | :error
401
404
def decode64 ( string , opts \\ [ ] ) when is_binary ( string ) do
402
405
{ :ok , decode64! ( string , opts ) }
403
406
rescue
@@ -431,7 +434,7 @@ defmodule Base do
431
434
"foob"
432
435
433
436
"""
434
- @ spec decode64! ( binary , keyword ) :: binary
437
+ @ spec decode64! ( binary , ignore: :whitespace , padding: boolean ) :: binary
435
438
def decode64! ( string , opts \\ [ ] ) when is_binary ( string ) do
436
439
pad? = Keyword . get ( opts , :padding , true )
437
440
string |> remove_ignored ( opts [ :ignore ] ) |> do_decode64 ( pad? )
@@ -453,7 +456,7 @@ defmodule Base do
453
456
"_3_-_A"
454
457
455
458
"""
456
- @ spec url_encode64 ( binary , keyword ) :: binary
459
+ @ spec url_encode64 ( binary , padding: boolean ) :: binary
457
460
def url_encode64 ( data , opts \\ [ ] ) when is_binary ( data ) do
458
461
pad? = Keyword . get ( opts , :padding , true )
459
462
do_encode64url ( data , pad? )
@@ -481,7 +484,7 @@ defmodule Base do
481
484
{:ok, <<255, 127, 254, 252>>}
482
485
483
486
"""
484
- @ spec url_decode64 ( binary , keyword ) :: { :ok , binary } | :error
487
+ @ spec url_decode64 ( binary , ignore: :whitespace , padding: boolean ) :: { :ok , binary } | :error
485
488
def url_decode64 ( string , opts \\ [ ] ) when is_binary ( string ) do
486
489
{ :ok , url_decode64! ( string , opts ) }
487
490
rescue
@@ -513,7 +516,7 @@ defmodule Base do
513
516
<<255, 127, 254, 252>>
514
517
515
518
"""
516
- @ spec url_decode64! ( binary , keyword ) :: binary
519
+ @ spec url_decode64! ( binary , ignore: :whitespace , padding: boolean ) :: binary
517
520
def url_decode64! ( string , opts \\ [ ] ) when is_binary ( string ) do
518
521
pad? = Keyword . get ( opts , :padding , true )
519
522
string |> remove_ignored ( opts [ :ignore ] ) |> do_decode64url ( pad? )
@@ -551,7 +554,7 @@ defmodule Base do
551
554
"MZXW6YTBOI"
552
555
553
556
"""
554
- @ spec encode32 ( binary , keyword ) :: binary
557
+ @ spec encode32 ( binary , case: encode_case , padding: boolean ) :: binary
555
558
def encode32 ( data , opts \\ [ ] ) when is_binary ( data ) do
556
559
case = Keyword . get ( opts , :case , :upper )
557
560
pad? = Keyword . get ( opts , :padding , true )
@@ -594,7 +597,7 @@ defmodule Base do
594
597
{:ok, "foobar"}
595
598
596
599
"""
597
- @ spec decode32 ( binary , keyword ) :: { :ok , binary } | :error
600
+ @ spec decode32 ( binary , case: decode_case , padding: boolean ) :: { :ok , binary } | :error
598
601
def decode32 ( string , opts \\ [ ] ) do
599
602
{ :ok , decode32! ( string , opts ) }
600
603
rescue
@@ -640,7 +643,7 @@ defmodule Base do
640
643
"foobar"
641
644
642
645
"""
643
- @ spec decode32! ( binary , keyword ) :: binary
646
+ @ spec decode32! ( binary , case: decode_case , padding: boolean ) :: binary
644
647
def decode32! ( string , opts \\ [ ] ) when is_binary ( string ) do
645
648
case = Keyword . get ( opts , :case , :upper )
646
649
pad? = Keyword . get ( opts , :padding , true )
@@ -680,7 +683,7 @@ defmodule Base do
680
683
"CPNMUOJ1E8"
681
684
682
685
"""
683
- @ spec hex_encode32 ( binary , keyword ) :: binary
686
+ @ spec hex_encode32 ( binary , case: encode_case , padding: boolean ) :: binary
684
687
def hex_encode32 ( data , opts \\ [ ] ) when is_binary ( data ) do
685
688
case = Keyword . get ( opts , :case , :upper )
686
689
pad? = Keyword . get ( opts , :padding , true )
@@ -724,7 +727,7 @@ defmodule Base do
724
727
{:ok, "foobar"}
725
728
726
729
"""
727
- @ spec hex_decode32 ( binary , keyword ) :: { :ok , binary } | :error
730
+ @ spec hex_decode32 ( binary , case: decode_case , padding: boolean ) :: { :ok , binary } | :error
728
731
def hex_decode32 ( string , opts \\ [ ] ) do
729
732
{ :ok , hex_decode32! ( string , opts ) }
730
733
rescue
@@ -771,7 +774,7 @@ defmodule Base do
771
774
"foobar"
772
775
773
776
"""
774
- @ spec hex_decode32! ( binary , keyword ) :: binary
777
+ @ spec hex_decode32! ( binary , case: decode_case , padding: boolean ) :: binary
775
778
def hex_decode32! ( string , opts \\ [ ] ) when is_binary ( string ) do
776
779
case = Keyword . get ( opts , :case , :upper )
777
780
pad? = Keyword . get ( opts , :padding , true )
0 commit comments