Project

General

Profile

Actions

Feature #19626

open

Alias Base64 methods to non-64 suffixed methods

Added by ryanbigg (Ryan Bigg) about 1 year ago. Updated about 1 year ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:113383]

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) about 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) about 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).

Actions

Also available in: Atom PDF

Like2
Like0Like1