Как заменить драгоценный камень Unicode на Ruby 1.9?

Если Вы работаете с X ML [HT], одной из основанных на теге систем шаблонной обработки, которые могут уехать, Вы с правильно построенными шаблонами - хорошее перемещение. Я использую PXTL, FWIW. (Это может произвести другие форматы, но если бы Ваш акцент не является XML или HTML, это не был бы разумный выбор.)

у меня есть интенсивная неприязнь к шаблонной обработке систем, которые требуют к “help, Вы разделяете бизнес-логику и presentation” путем ограничения выражений их собственным Небольшим Языком. Они, кажется, не понимают, что там таково как вещь как “presentation logic”, и она может быть иногда сложной достаточно для необходимости в Реальном Языке как Python для выполнения его. Наличие Вас выгоняет Вашу логику представления в приложение с бизнес-логикой, так не победа . Избегайте!

(Ограниченное выражение отдельный подход мини-языка имел некоторый смысл в вЂ˜EL’ JSP, поскольку Java является слишком раздражающе подробным для использования в библиотеке шаблонной обработки. Но у нас есть Python! Это идеально подходит для записи выражений в шаблонах, как это; прерывающая функциональность и то, чтобы заставлять пользователя выучить другой новый язык получают Вас ничто.)

5
задан Nando Vieira 24 August 2009 в 14:50
поделиться

1 ответ

Обновление: лучшим вариантом может быть использование драгоценного камня unicode_utils , который был создан специально для этих недостающих функций:

require "unicode_utils"
UnicodeUtils.nfkd("áéíóúç").gsub(/[^\x00-\x7F]/,'').to_s
#=> "aeiouc"

Есть ли вероятность, что вы можете положиться на ActiveSupport Rails? Затем вы можете сделать следующее:

require "activesupport"
mb_str = ActiveSupport::Multibyte::Chars.new("áéíóúç")
mb_str.normalize(:kd).gsub(/[^\x00-\x7F]/,'').to_s
#=> "aeiouc"

ActiveSupport :: Multibyte был написан для обеспечения поддержки UTF-8 / Unicode в Ruby 1.8, но отлично работает и в 1.9. Вы можете позаимствовать часть кода , если не хотите, чтобы он был внешней зависимостью.

13
ответ дан 18 December 2019 в 13:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: