Project

General

Profile

Actions

Feature #19565

closed

Ignore lower-case/upper-case Proposal

Added by rubyFeedback (robert heiler) about 1 year ago. Updated about 1 year ago.

Status:
Rejected
Assignee:
-
Target version:
-
[ruby-core:113061]

Description

So, first april is on the horizon and in-before-we-go (nobu tends
to make quick first april proposals, so let's hurry up!)

It is here proposed to ignore case, that is, lower-case, and upper-case,
at the least for method calls. This could be for variables too, but I
don't care so much about variables.

Rationale for the proposal:

Given a method such as

primary_link

I typoed and wrote:

primary_LINK

Of course ruby complains and insists it must be written "primary_link".
(I use that method for ad-hoc HTML hyperreferences in a webpage.)

Wouldn't it be nice if we are able to ignore this, and simply assume
that, at the least for method names, ruby would ignore the case,
that is, whether it is downcased/lowercased or upper cased?

Granted, the proposal is about 85% meant as a jest and joke, but the
15% is that this MAY be useful in SOME situations. Kind of like
we had in oldschool evil.rb; I distinctly remember we could even
change object identities at runtime too (I don't know what happened
to evil.rb, but I distinctly remember we had it during the ruby
1.8.x era or so).

I actually only propose this to be used on a per-file basis, to
simplify it.

So, for instance, you have a .rb file, and in that .rb file you
need to tell ruby that you want to ignore the case.

This could perhaps be via some configuration-call, such as:

RbConfig.ignore_case

Or something similar. Or more similar to IRB where we treat
RbConfig as a Hash via [] e. g.

RbConfig[:ignore_case] = true

Or something similar like that. Right now there is no method
defined on RbConfig, so this should not cause backwards
incompatibility issues.

Of course one can reason that this is 100% a rubbish proposal.
That's ok. Easier to suggest it when it is close to the first
april. :)

PHP works like this if I recall correctly. Windows also ignores
cases of e. g. binaries and directories if I recall correctly.

So while this proposal may be rubbish, and as stated more of a
joke, I believe there may be a few potential use cases of this
too. Kind of like the ruby user telling ruby "ruby, I know by
default you look at the case of characters, but for this
specific file or project, I want you to ignore the case".

(We could extend this to a whole namespace, e. g. per-module
and per-class, but for this proposal I want to keep it simpler
and just focus on a per-file basis, that is, on a per .rb
basis. We could also add more magic comments such as it was
with "# frozen_string_literal: true", but I think the ruby core
team does not want to add more meta-meaning, so this probably
would have zero chance to be implemented. So the focus on a
per .rb file basis just seemed simpler to me for this proposal
here.)

Updated by matz (Yukihiro Matsumoto) about 1 year ago

  • Status changed from Open to Rejected

Interesting idea. But we reject for several reasons:

  • Ruby uses upper/lower case to classify the type of variables/constants
  • We already have method/variable names only differ in cases

For those reasons, ignoring cases would introduce huge incompatibility that we cannot accept.
This kind of case insensitivity can only be introduced in the early stage of a language. It's too late for Ruby.
In addition, case-insensitive languages make me feel nostalgic.

Matz.

Actions

Also available in: Atom PDF

Like0
Like0