On Thu, Mar 25, 2010 at 18:24, NARUSE, Yui <naruse / airemix.jp> wrote:
> (2010/03/26 0:02), Nikolai Weibull wrote:
>>
>> On Thu, Mar 25, 2010 at 14:45, Yusuke Endoh<redmine / ruby-lang.org> wrote:
>>>
>>> Issue #2350 has been updated by Yusuke Endoh.
>>
>>> Matz seemed to reject this ticket, and OP seemed to be satisfied
>>> with matz's answer. So I close the ticket.
>>
>> How would I be able to hook in my character-encodings library into
>> Ruby 1.9 Strings? I would like to override, for example, #upcase for
>> all Strings that have a Unicode encoding. Is this possible?
>
> You can hook String methods, Ruby doesn't forbid it.

Yes, I can do something like

class String
  def unicodify
    extend Encoding::Character::Unicode
  end
end

but I was wondering if there was a way to do it without having to do

String.new.unicodify.upcase

> But I think, people want both ASCII version and Unicode version of upcase.
> So you should name your Unicode methods another names.

Why would they want that?  Having an ASCII-only version of #upcase
makes no sense for a Unicode String more than supporting #upcase
requires that you load the Unicode character database information,
which takes up quite a lot of memory.

I want to transparently deal with this kind of thing.  I know that the
Ruby way is to be explicit about encodings and I actually like that,
but that’s only something I care about at creation, not when invoking
methods on the String.