Вопрос к начинающим (и не очень) Рубинистам
Предположим, что к вам в каминную трубу залез Дед Мороз и принес вам Ruby 2.0. Да, у вас нету каминной трубы (и тем более Деда Мороза, но предположим). И в Ruby 2.0 реализован нормальный Unicode, но - backwards compatible. Что вы предпочтете?
-
Замедление всей обработки строк во всей программе в целом и “магическое” одарение методов String поддержкой Unicode, в стиле mb_func_overload в PHP:
str = “Я ненавижу ASCII” str[0..4] #=> “Я нен”
-
Вся обработка строк остается такой же как и была (происходит в байтовом выражении), но при необходимости обрабатывать именно буквы (если вы скажете что это одно и то же – я вас побью) это нужно делать так:
str = “Я ненавижу ASCII” str.characters[0..4] #=> “Я нен”
В варианте 2 естественно правильный софт (а.к.а. Rails) будет использовать правильный синтаксис при обработке строк. В обоих вариантах нужно компилировать расширение для Ruby. Применение новой адресации к строкам работает только при $KCODE == ‘UTF8’
Пишите в комментариях какой вариант вам нравится больше.
Важное примечание. Я не Матц и я не буду править исходники Ruby на C. Я пытаюсь сделат meaningful-затычку для этой чудовищной дырки, и мне нужно знать как ее сделать правильнее.