Project

General

Profile

Actions

Feature #19626

open

Alias Base64 methods to non-64 suffixed methods

Added by ryanbigg (Ryan Bigg) 12 months ago. Updated 12 months 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) 12 months 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) 12 months 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