Feature #19626
openAlias Base64 methods to non-64 suffixed methods
Description
Long time Ruby user, first time issue poster. Apologies if this isn't the correct process of proposing this sort of change. Redirect me somewhere else if I need to be.
I'd like to propose aliasing the methods in the Base64 module to new methods:
Base64.encode64 -> Base64.encode
Base64.decode64 -> Base64.decode
etc.
I am guessing that this suffix was used to prevent issues where Base64
was included into a class and would (potentially) clash with that class's own decode
and encode
methods. This is not how Base64
has been used in my experience -- it's typically a call to the method such as Base64.encode64
. But maybe my experience of Ruby is unique in that way.
I would still like to open this issue at least to start a potential discussion about these potential aliases, or at least documenting solid reasons why the 64 suffix has to stick.
Updated by nobu (Nobuyoshi Nakada) over 1 year ago
Aliasing singleton methods only?
diff --git a/lib/base64.rb b/lib/base64.rb
index 15c0b297ce2..e148adeaaf1 100644
--- a/lib/base64.rb
+++ b/lib/base64.rb
@@ -110,4 +110,10 @@
end
strict_decode64(str)
end
+
+ class << self
+ public_instance_methods(false).each do |m|
+ alias_method(m.to_s.chomp("64"), m)
+ end
+ end
end
$ ./ruby -rbase64 -e 'p Base64.encode("\0"*3)'
"AAAA\n"
Updated by byroot (Jean Boussier) over 1 year ago
Aliasing singleton methods only?
That would make sense.
And while we're at it, I think it would be nice to also alias theses as .load
and .dump
, as it makes composing various encoders much easier (e.g. https://github.com/Shopify/paquito/blob/7b97f481a3690fe5531aebe2273b779481cfa4ac/lib/paquito/coder_chain.rb).