julik-rutils 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. data/History.txt +162 -0
  2. data/Manifest.txt +42 -0
  3. data/README.txt +234 -0
  4. data/Rakefile.rb +41 -0
  5. data/TODO.txt +6 -0
  6. data/WHAT_HAS_CHANGED.txt +44 -0
  7. data/bin/gilensize +22 -0
  8. data/bin/rutilize +38 -0
  9. data/init.rb +27 -0
  10. data/lib/countries/countries.rb +1773 -0
  11. data/lib/datetime/datetime.rb +83 -0
  12. data/lib/gilenson/bluecloth_extra.rb +7 -0
  13. data/lib/gilenson/gilenson.rb +665 -0
  14. data/lib/gilenson/helper.rb +34 -0
  15. data/lib/gilenson/maruku_extra.rb +19 -0
  16. data/lib/gilenson/rdiscount_extra.rb +7 -0
  17. data/lib/gilenson/redcloth_extra.rb +42 -0
  18. data/lib/integration/integration.rb +1 -0
  19. data/lib/integration/rails_date_helper_override.rb +127 -0
  20. data/lib/integration/rails_pre_filter.rb +4 -0
  21. data/lib/pluralizer/pluralizer.rb +261 -0
  22. data/lib/rutils.rb +54 -0
  23. data/lib/transliteration/bidi.rb +21 -0
  24. data/lib/transliteration/simple.rb +75 -0
  25. data/lib/transliteration/transliteration.rb +53 -0
  26. data/lib/version.rb +5 -0
  27. data/test/extras/integration_bluecloth.rb +13 -0
  28. data/test/extras/integration_maruku.rb +15 -0
  29. data/test/extras/integration_rails_filter.rb +29 -0
  30. data/test/extras/integration_rails_gilenson_helpers.rb +80 -0
  31. data/test/extras/integration_rails_helpers.rb +85 -0
  32. data/test/extras/integration_rdiscount.rb +15 -0
  33. data/test/extras/integration_redcloth3.rb +18 -0
  34. data/test/extras/integration_redcloth4.rb +19 -0
  35. data/test/run_tests.rb +4 -0
  36. data/test/test_datetime.rb +145 -0
  37. data/test/test_gilenson.rb +396 -0
  38. data/test/test_integration.rb +22 -0
  39. data/test/test_integration_flag.rb +18 -0
  40. data/test/test_pluralize.rb +84 -0
  41. data/test/test_rutils_base.rb +11 -0
  42. data/test/test_transliteration.rb +53 -0
  43. metadata +121 -0
@@ -0,0 +1,162 @@
1
+ === 1.0.2 - 09.02.2009
2
+
3
+ * В 1879 раз поправлена генерация rdoc из gems
4
+
5
+ === 1.0.1 - 08.02.2009
6
+
7
+ * Оверрайды очищены и уничтожены, перегрузка форматтеров выполняется через наследование и рельсовый хелпер (julik)
8
+ * Протестировано на JRuby 1.1.6 (julik)
9
+ * Основные шестеренки совместимы с Ruby 1.9.1 (julik)
10
+ * BiDi транслит покидает нас. URL давно поддерживают Unicode, если нет - сохраняйте транслитерированный slug отдельно.
11
+ Если кому-то это не нравится - см. Wikipedia (julik)
12
+
13
+ === 0.2.5 - 08.08.2008
14
+
15
+ * Поддержка Rails Edge (pre-2.2) для хелперов DateTime. RuTils при overrides_enabled пытается поставить себя выше I18n -- при overrides_enabled I18n не вызывается для datetime хелперов. (Yaroslav Markin)
16
+ * Частичная поддержка RedCloth 4 (julik)
17
+ * Фильтр для контроллера чтобы установить верный флаг для экшена, то что происходит в экшене - thread local (julik)
18
+ * Разделяем тесты и хаки (julik)
19
+ * Добавлена поддержка strftime макроса %e (номер дня в месяце без лидирующего нуля) -- по аналогии с %d, при использовании %e мы склоняем имя месяца (Yaroslav Markin)
20
+ * Использование с RedCloth 4 больше не вызывает ошибки (совместимости для перегрузки все еще нет) (Yaroslav Markin)
21
+ * Добавлен метод Fixnum#kopeek для вывода целочисленных Денег (julik)
22
+ * RuTils::overrides безопасен для нитей (julik)
23
+
24
+ === 0.2.4 - 10.07.2008
25
+
26
+ * Форматтер даты-времени должен гарантированно возвращать результат (Eugene Pimenov + julik)
27
+ * Передаваемый формат даты-времени не должен мутировать в пути (Eugene Pimenov)
28
+ * В Gilenson закрывающая латинская кавычка не принимается за знак дюйма
29
+ * В Gilenson корректно обрабатываются неразрывные пробелы если в сегменте присутствуют пунктуация из глифов
30
+ * В Gilenson добавлены настройки force_en_quotes и force_ru_quotes (если нужно свести все кавычки к одной форме)
31
+ * До свидания, Gilenson::Obsolete (julik)
32
+ * Небольшая чистка инфраструктуры билдов (julik)
33
+ * strftime("%d %B") теперь возвращает день в двузначном формате (например, 01 декабря) (Anonymous)
34
+ * добавлены алиасы #rubl и #rublja для Numeric#rublej. Теперь можно писать: 1.rubl, 3.rublja. (Yaroslav Markin)
35
+ * Переписаны Date хелперы для Rails. Теперь поддерживаются все опции Rails 1.2--2.0 и
36
+ Rails 2.1+ (Yaroslav Markin)
37
+ * Переписаны и дополнены тесты на перегрузку Date хелперов Rails (Yaroslav Markin)
38
+ * Для тестирования оверрайдов Rails используется gem multi_rails
39
+ * До свидания, <nobr>. Указывайте .nobr { text-wrap: nowrap } в своих стилевых таблицах.
40
+
41
+ === 0.2.3 - 27.09.2007
42
+
43
+ * Кошмар - в новой версии rubygems изменилась семантика s.files из-за чего мы забыли
44
+ все файлы в корневой директории - включая init.rb (julik)
45
+
46
+ === 0.2.2 - 24.09.2007
47
+
48
+ * Gilenson - обрабатываем акронимы по принципу Textile (zajats, julik)
49
+ * Gilenson - отформатирован под 2 пробела (julik)
50
+ * В тестах пользуйтесь assert_equal_cp (julik)
51
+ * Welcome to subversion (julik)
52
+
53
+ === 0.2.1 - 02.04.2007
54
+
55
+ * Восстановлен в gemspec gilenson.rb (Сергей Барабаш)
56
+
57
+ === 0.2.0 - 02.04.2007
58
+
59
+ * Фикс squeeze в dirify (Сергей Барабаш)
60
+ * Формат даты по умолчанию - %F (Сергей Барабаш)
61
+
62
+ === 0.1.9 - 17.02.2007
63
+
64
+ * Gilenson integration - не съедаем пробелы между тегами при прогоне текста через Textile
65
+
66
+ === 0.1.8 - 05.02.2007
67
+
68
+ * Gilenson - расстановка инициалов не должна цеплять аббревиатуры (julik)
69
+
70
+ === 0.1.7 - 05.02.2007
71
+ * Date helpers приведены в более веселый вид (и в соответствие с Rails 1.2.1) (julik)
72
+ * date_helper надо поменять чтобы передавать рельсовому хелперу весь массив options в хеше (julik)
73
+
74
+ === 0.1.6 - 18.08.2006
75
+
76
+ * Удалили jcode, он нам не сильно нужен (julik)
77
+ * В простом транслите Шипилов - Schipilov вместо SCHipilov (julik)
78
+ * Тесты интеграции валятся явно и громко если зависимые модули на машине отсутствуют (julik)
79
+ * Масса крошечных твиков чтобы сделать все немножко аккуратнее (julik)
80
+ * Родительный падеж (RU_INFLECTED_MONTHNAMES) для месяцев после числа (%d %B === 31 декабря) в strftime (mash)
81
+
82
+ === 0.1.5 - 08.05.2006
83
+
84
+ * Транслитераторы вынесены в отдельные файлы (julik)
85
+ * Починен баг с передачей часа в нужном падеже в distance_of_time (anonyomous)
86
+ * Добавлены корректные методы публикации доков, сменены параметры их генерации (julik)
87
+ * cp -r заменен на cp_r чтобы rutilize работал в Windows (anonymous)
88
+ * Имена месяцев со строчной буквы (sgt - http://rubyforge.org/users/sgt)
89
+ * Поддерживаем оба класса Locale (из ruby-locale и gettext - они немного отличаются по семантике) (julik)
90
+
91
+
92
+ === 0.1.4 - 02.12.2005
93
+
94
+ * Поправлен импорт Rails-плагина (julik)
95
+ * Поправлен паттерн сбора тестируемых файлов (julik)
96
+ * Gilenson - на Oniguruma сбоит skip_code, но это надо побарывать нормальным токенизатором, пока откладывается (julik)
97
+ * Gilenson - в тестах произведена замена <cOdE> на <code> и <TT> на <tt> (mash)
98
+ * Gilenson - в двух регулярных выражениях (в "def process_quotes") изменен #{@mark_tag} на
99
+ \#{@mark_tag} чтобы предотвратить segfault ruby 1.8.2 (2004-12-25) на [i386-mswin32] (mash)
100
+ * Gilenson - починен дикий баг с маркером в одинарных кавычках - теперь таки последовательность байтов вместо символов (julik)
101
+ * DateTime - RU_INFLECTED_MONTHNAMES => Авгуса --> Августа (mash)
102
+
103
+ === 0.1.3 - 14.11.2005
104
+
105
+ * Gilenson - замена троеточий на ellipsis (julik)
106
+ * Gilenson - теперь пробел, идущий перед одной или двумя буквами на конце слова
107
+ меняется на glyph[:nbsp]. (mash)
108
+ * Gilenson - починен баг из-за которого не типографилась закрывающая кавычка после вопросительного
109
+ и восклицательного знака (julik)
110
+ * По умолчанию используется новый Gilenson (Gilenson::Formatter). Старый доступен как Gilenson::Obsolete и через
111
+ String#o_gilensize и грузится только в случае необходимости. Если у вас были тесты провеяющие gilensize
112
+ скорее всего они "полетели" (julik)
113
+ * Gilenson - дополнительная фича, не связанная с типографикой: замена амперсанда в следующих атрибутах
114
+ тагов: href, src, data. Пример: <a href="?x=1&y=2&#38;z=3"> => <a href="?x=1&#38;y=2&#38;z=3"> (mash)
115
+ * Gilenson - изменён метод process_ampersands (стало process_escape_html), меняющий &,<,> на глифы :amp,:lt,:gt
116
+ при запрете HTML (@settings[:html]=>false). По-умолчанию Гиленсон разрешает использование HTML.
117
+ В иерархии метод выставлен первым для корректной обработки случаев вида
118
+ %{Используйте &#38; вместо &amp;}.gilensize(:html=>false) (mash)
119
+ * Gilenson - добавлены :skip_attr=>false и :skip_code=>true для управления обработкой типографики атрибутов тегов title, alt и содержимого <code/>, <tt/>, <![CDATA[...]]> (mash)
120
+ * Gilenson - добавлен :raw_output=>true для вывода обычных UTF-8 chars вместо entities (julik)
121
+ * Смена структуры модулей Gilenson (julik)
122
+ RuTils::Gilenson::Obsolete - старый класс форматтера
123
+ RuTils::Gilenson::Formatter - новый класс форматтера
124
+ При вызове RuTils::Gilenson.new возвращается новый Formatter
125
+ * Gilenson - документация (julik)
126
+ * Gilenson - основные группы настроек "по-умолчанию" выносятся в константы (julik)
127
+ * Gilenson - фильтры выносятся в методы типа process_фильтр и их можно применять по отдельности через Formatter#apply (julik)
128
+ * Gilenson - добавлены &para; и &numero; (последний - не стандарт, но нужен для преобразований символа "номер") (mash)
129
+ * Gilenson - добавлен хэш @glyph_copy_paste для подмены юникодных типографских символов на entities
130
+ (опционально, через @settings[:copypaste]=>true) (mash)
131
+ * Gilenson - добавлена "склейка" инициалов полукруглой шпацией (thin space)
132
+ * Gilenson - добавлен Formatter#process чтобы обрабатывать строки поточно, и сделан удобный доступ к настройкам
133
+ через "хвост" метода (julik)
134
+ * Во всех внутренних строковых подстановках Gilenson используются указатели на глифы с двоеточием в начале (julik)
135
+ * Gilenson - введен DOUBLE PRIME (&#8243;) для знаков дюйма (julik)
136
+ http://en.wikipedia.org/wiki/Prime_%28mark%29
137
+ Согласно изощренным правилам скошенный prime правильней чем "
138
+ * Новый Гиленсон lib/gilenson/gilenson.rb (mash)
139
+ RuTils::GilensonNew::Typografica.new('какой-то текст')
140
+ %q{"какой-то текст"}.n_gilensize
141
+ * Код приведён к "2 spaces - no tabs", частично полетели дифы (mash)
142
+ * Изменены константы дат, используемые в lib/integration/rails_date_helper_override.rb:
143
+ Было: RuTils::DateTime::ABBR_MONTHNAMES, RuTils::DateTime::INFLECTED_MONTHNAMES
144
+ Стало: Date::RU_ABBR_MONTHNAMES, Date::RU_INFLECTED_MONTHNAMES (mash)
145
+ * Добавлена функциия Numeric#rublej (julik)
146
+ * Добавлена русская версия Time#ru_strftime и Date#ru_strftime (mash)
147
+
148
+ === 0.1.2 - 01.11.2005
149
+
150
+ * Добавлен BiDi-транслит c тестами (mash)
151
+
152
+ === 0.04 - 20.10.2005
153
+
154
+ * Чистка документации
155
+
156
+ === 0.03 - 18.10.2005
157
+
158
+ * Легкий рефакторинг и чистка документации, добавлена реализация BiDi-транслита
159
+
160
+ === 0.02 - 12.07.2005
161
+
162
+ * Заменен маркер подстановки тегов в Gilenson. Ранее без oniguruma из-за его применения "проглатывалась" буква "р"
@@ -0,0 +1,42 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile.rb
5
+ TODO.txt
6
+ WHAT_HAS_CHANGED.txt
7
+ bin/gilensize
8
+ bin/rutilize
9
+ init.rb
10
+ lib/countries/countries.rb
11
+ lib/datetime/datetime.rb
12
+ lib/gilenson/bluecloth_extra.rb
13
+ lib/gilenson/gilenson.rb
14
+ lib/gilenson/helper.rb
15
+ lib/gilenson/maruku_extra.rb
16
+ lib/gilenson/rdiscount_extra.rb
17
+ lib/gilenson/redcloth_extra.rb
18
+ lib/integration/integration.rb
19
+ lib/integration/rails_date_helper_override.rb
20
+ lib/integration/rails_pre_filter.rb
21
+ lib/pluralizer/pluralizer.rb
22
+ lib/rutils.rb
23
+ lib/transliteration/bidi.rb
24
+ lib/transliteration/simple.rb
25
+ lib/transliteration/transliteration.rb
26
+ lib/version.rb
27
+ test/extras/integration_bluecloth.rb
28
+ test/extras/integration_maruku.rb
29
+ test/extras/integration_rails_filter.rb
30
+ test/extras/integration_rails_gilenson_helpers.rb
31
+ test/extras/integration_rails_helpers.rb
32
+ test/extras/integration_rdiscount.rb
33
+ test/extras/integration_redcloth3.rb
34
+ test/extras/integration_redcloth4.rb
35
+ test/run_tests.rb
36
+ test/test_datetime.rb
37
+ test/test_gilenson.rb
38
+ test/test_integration.rb
39
+ test/test_integration_flag.rb
40
+ test/test_pluralize.rb
41
+ test/test_rutils_base.rb
42
+ test/test_transliteration.rb
@@ -0,0 +1,234 @@
1
+ = RuTils
2
+
3
+ http://rutils.rubyforge.org
4
+
5
+ RuTils - простой обработчик русского текста на Ruby.
6
+ Основная цель RuTils - сделать разработку русскоязычных приложений на Ruby (и Rails) максимально простой
7
+ и приятной (в идеале - столь же простой как и разработку оных на английском).
8
+
9
+ == Шеф! все пропало! я обновил RuTils и он работает совершенно по-другому!
10
+
11
+ Раздел также известен под именем "Что поменялось в RuTils 1.0.0". Вам {сюда.}[link:files/WHAT_HAS_CHANGED_txt.html]
12
+
13
+ == Чье это
14
+
15
+ Разработчики RuTils - {Julik}[http://julik.nl], {Mash}[http://imfo.ru], {Yaroslav Markin}[http://markin.net/]
16
+
17
+ Большое спасибо Роману Иванову aka Kukutz и Николаю Яремко aka Kuso Mendokuzee за
18
+ реализацию большинства алгоритмов на PHP.
19
+
20
+ = Как воспользоваться
21
+
22
+ Просто включите rutils в свою программу как библиотеку
23
+
24
+ require 'rutils'
25
+
26
+ Для использования с Ruby on Rails установите RuTils как плагин
27
+ (скопируйте библиотеку в vendor/plugins приложения).
28
+
29
+ = Что оно делает
30
+
31
+ == Cумма прописью и выбор числительного
32
+
33
+ RuTils реализует сумму прописью для целых и дробных чисел, с дополнительным
34
+ учетом рода. Например:
35
+
36
+ 4.propisju => "четыре"
37
+ 345.propisju => "триста сорок пять"
38
+ 231.propisju(2) => "двести тридцать одна"
39
+ 341.propisju_items(1, "чемодан", "чемодана", "чемоданов") => "триста сорок один чемодан"
40
+ (212.40).propisju_items(2, "сволочь", "сволочи", "сволочей") => "двести двенадцать целых
41
+ четыре десятых сволочи"
42
+
43
+ Также реализуется выбор варианта числительного в зависимости от числа
44
+
45
+ 15.items("кодер", "кодера", "кодеров") => "кодеров"
46
+
47
+ и вывод "суммы прописью" для денежных сумм в рублях
48
+
49
+ (413.2).rublej => "четыреста тринадцать рублей двадцать копеек"
50
+ 1.rubl => "один рубль"
51
+ 22.rublja => "двадцать два рубля"
52
+
53
+ Если вы храните денежные единицы в целочисленных типах, пользуйтесь "копеечными" вариантами:
54
+
55
+ 300.kopeek => "три рубля"
56
+ 121.kopeika => "один рубль двадцать одна копейка"
57
+
58
+ == Транслит
59
+
60
+ RuTils на данный момент реализует простейший транслит "в одну сторону".
61
+ "Взаимно-однозначный транслит" (BiDi-транслит) больше не поддерживается.
62
+
63
+ "Вот такое вот дело".translify => "Vot takoye vot delo"
64
+ "Несомненный прогресс по сравнению с PHP".dirify => "nesomnennyi-progress-po-sravneniu-s-php"
65
+
66
+ == Обработка русской типографики в HTML
67
+
68
+ Gilenson - порт Typografica[http://pixel-apes.com/typografica] от Pixel Apes.
69
+ Тыпографица - механизм автоматической расстановки подстановок в тексте перед его
70
+ выводом в HTML, оформляющий неразрывные пробелы, типографские кавычки и тому
71
+ подобные "украшательства".
72
+
73
+ Gilenson расставит в тексте "умные" правильные кавычки (русские - для кириллицы,
74
+ английские - для латиницы), заменит "хитрые" пунктуационные символы на entities и
75
+ отформатирует знаки типа (c), (tm), телефоны и адреса.
76
+
77
+ %q{"И это называется языком?", -- таков был его вопрос}.gilensize => "&#171;И
78
+ это&#160;называется языком?&#187;, &#8212; таков был&#160;его вопрос"
79
+
80
+ Более подробная документация по Gilenson доступна в документах к
81
+ RuTils::Gilenson::Formatter
82
+
83
+ В комплекте также есть скрипт gilensize, которым можно поточно обрабатывать
84
+ Unicode-тексты в среде UNIX пользуясь стандартным выводом
85
+
86
+ $ cat myfile.txt | gilensize > myfile.html
87
+
88
+ == Даты
89
+
90
+ В класс Date введены следующие константы:
91
+
92
+ * RU_MONTHNAMES (Январь Февраль Март...)
93
+ * RU_DAYNAMES (Воскресенье Понедельник...)
94
+ * RU_ABBR_MONTHNAMES (Янв Фев Мар...)
95
+ * RU_ABBR_DAYNAMES (Вск Пн Вт Ср...)
96
+ * RU_INFLECTED_MONTHNAMES (Января Февраля Марта...)
97
+ * RU_DAYNAMES_E (первое второе третье...)
98
+
99
+ Пример использования:
100
+
101
+ require 'date' date = Date.new(2005, 11, 9)
102
+ puts "#{Date::RU_ABBR_MONTHNAMES[date.mon]}" => Ноя
103
+ puts "#{Date::RU_MONTHNAMES[date.mon]}" => Ноябрь
104
+ puts "#{Date::RU_ABBR_DAYNAMES[date.wday]}" => Ср
105
+ puts "#{Date::RU_DAYNAMES[date.wday]}" => Среда
106
+
107
+ При включенной перезагрузке функций (RuTils::overrides_enabled) осуществляется
108
+ "покрытие" стандартной функции Time#strftime ("родную" #strftime можно продолжать
109
+ использовать через alias-метод #strftime_norutils):
110
+
111
+ Time.local(2005,"dec",31).strftime("%a, %A, %b, %B") => "Сб, Суббота, Дек, Декабрь"
112
+ Time.local(2005,"dec",31).strftime_norutils("%a, %A, %b, %B") => "Sat, Saturday, Dec, December"
113
+
114
+ == Интеграция с RedCloth и BlueCloth
115
+
116
+ RuTils в первую очередь задумывался как максимально "прозрачный" механизм
117
+ обработки русского текста в контексте Rails-приложения.
118
+
119
+ Если вы используете RuTils в одном приложении со стандартными форматтерами (RedCloth, BlueCloth...) воспользуйтесь
120
+ дополнительными модулями которые выводят отформатированный Гиленсоном результат работы форматтеров
121
+
122
+ Gilenson определяет следующие дополнительные форматтеры (они работают так же как и их базовые классы)
123
+
124
+ * RuTils::Gilenson::RedClothExtra
125
+ * RuTils::Gilenson::BlueClothExtra
126
+ * RuTils::Gilenson::RDiscountExtra
127
+ * RuTils::Gilenson::MarukuExtra
128
+
129
+ В этих классах Gilenson будет обрабатывать типографику во всех текстах, пропускаемых через
130
+ них. Эти классы при включенном флаге RuTils.overrides автоматически подключаются в хелперы
131
+ +markdown+ и +textilize+.
132
+
133
+ == Интеграция с Rails версии 2.2.2 и выше
134
+
135
+ Используйте гем russian для дат и RuTils как дополнение (для транслита, функций kopeek и так далее)
136
+
137
+ == Интеграция с Rails версий 1.2 - 2.1.1
138
+
139
+ RuTils заставляет следующие функции старых (pre-i18n) версий Rails говорить по-русски:
140
+
141
+ * Меню выбора даты (+date_select+ и +datetime_select+) и связанные с этим хелперы
142
+ будут выводиться с русскими именами месяцев, и учитывая локализованный порядок дат
143
+ (сначала число, потом месяц, потом год)
144
+ * +distance_of_time_in_words+ будет выводить
145
+ русские описания длительности ("более 2 часов")
146
+
147
+ == Управление оверрайдами
148
+
149
+ Перегрузку всех функций других модулей можно включать и отключать в любое время с
150
+ помощью метода RuTils::overrides=. Когда перегрузка выключена, все сторонние
151
+ хелперы будут работать в стандартном режиме (например, даты и время будут выводиться по-русски).
152
+ Это нужно когда вам нужно переключиться на английский (или любой другой язык) без перезапуска приложения.
153
+
154
+ Рекомендуемый способ использования RuTils с Ruby on Rails приложением -- установка RuTils
155
+ плагином. Для этого скопируйте директорию rutils в папку vendor/plugins вашего
156
+ приложения или воспользуйтесь командой rutilize путь_к_rails_приложению чтобы сделать это
157
+ автоматически. После этого вы сможете использовать RuTils без необходимости
158
+ установки gem на вашем сервере (не забудьте перезапустить приложение чтобы
159
+ вгрузить в него RuTils).
160
+
161
+ $ rutilize /Sites/my_app1 /Sites/my_app2 /Sites/my_another_app
162
+
163
+ == Распространения
164
+
165
+ Вы можете свободно распространять RuTils со своим приложением при условии
166
+ сохранения структуры и файла README.
167
+
168
+ == Совместимость
169
+
170
+ * Ruby 1.8.x
171
+ * Ruby 1.9.x (релизные версии начиная с 1.9.1)
172
+ * JRuby 1.1.6
173
+
174
+ == Требования
175
+
176
+ * Ruby 1.8.2 или выше, немного прямых рук
177
+ * Rake[http://rake.rubyforge.org],
178
+
179
+
180
+ Rails[http://rubyonrails.org],
181
+ RedCloth[http://www.whytheluckystiff.net/ruby/redcloth/] и
182
+ BlueCloth[http://www.deveiate.org/projects/BlueCloth] для выполнения тестов.
183
+
184
+ == Работает ли это с текстом в кодировке отличной от UTF-8 (Windows-1251, KOI-8)
185
+
186
+ Нет и никогда не будет.
187
+
188
+ == Как получить помощь
189
+
190
+ Весь функционал RuTils поддерживает только UTF-8 (настройка $KCODE / KanjiCode
191
+ 'u'). Удостоверьтесь, что ваш скрипт правильно обрабатывает Unicode - то есть:
192
+
193
+ * Переменная $KCODE включена в режим 'u'
194
+ * Все строки которые вы собираетесь обрабатывать уже в кодировке UTF-8
195
+
196
+ Если вы используете RuTils для сайта под mod_ruby воспользуйтесь директивой
197
+ RubyKanjiCode в своем httpd.conf.
198
+
199
+ == Если вы все сделали правильно но что-то не работает
200
+
201
+ Сообщите об ошибке на странице проекта на RubyForge[http://rubyforge.org/projects/rutils]
202
+ Не забудьте указать версию, ее всегда можно узнать в константе
203
+
204
+ RuTils::VERSION
205
+
206
+ == Как ускорить реализацию новых функций
207
+
208
+ Воспользуйтесь трекером на RubyForge. Опишите нужный вам функционал и приложите
209
+ тесты, которым этот функционал должен удовлетворять. Схему организации тестов вы
210
+ можете скопировать из собственных тестов RuTils.
211
+
212
+ Если вы пишете исходный код, который войдет в RuTils или в тестовые наборы,
213
+ пожалуйста следуйте следующим правилам оформления кода:
214
+
215
+ * Unix line breaks (LF)
216
+ * Кодировка файлов - строго UTF-8 без BOM (Byte Order Mark)
217
+ * Все файлы должны содержать emacs-прагму
218
+ # -*- encoding: utf-8 -*-
219
+ в первой строке
220
+ * Отступы в 2 пробела, без табуляций
221
+ * Только однозначный код для 1.8 и 1.9
222
+ * Без функций которые отсутствуют в 1.8 (в первую очередь encodings)
223
+ * Без функций которые убраны из 1.9
224
+ * Однострочные блоки с фигурными скобками, многострочные - с +do ... end+
225
+ * Все другие конвенции нормального написания
226
+ Ruby-кода (http://github.com/chneukirchen/styleguide/tree/master)
227
+
228
+ При сравнении текстовых сегментов, прошедших через хитрые форматтеры пользуйтесь assert_equal_cp
229
+ - он внятно покажет вам какой символ отличается в двух строках (иначе будете вслепую искать
230
+ разницу между двумя разными пробелами, например)
231
+
232
+ Если вы хотите участвовать в разработке RuTils - fork us on GitHub
233
+
234
+ git clone git://github.com/julik/rutils.git
@@ -0,0 +1,41 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $KCODE = 'u'
3
+ $:.reject! { |e| e.include? 'TextMate' }
4
+
5
+ require 'lib/version'
6
+
7
+ begin
8
+ require 'rubygems'
9
+ require 'hoe'
10
+
11
+ DOCOPTS = %w(--charset utf-8 --promiscuous)
12
+
13
+ # Disable spurious warnings when running tests, ActiveMagic cannot stand -w
14
+ Hoe::RUBY_FLAGS.replace ENV['RUBY_FLAGS'] || "-I#{%w(lib test).join(File::PATH_SEPARATOR)}" +
15
+ (Hoe::RUBY_DEBUG ? " #{RUBY_DEBUG}" : '')
16
+
17
+ rutils = Hoe.new('rutils', RuTils::VERSION) do |p|
18
+ p.name = "rutils"
19
+ p.author = ["Julian 'Julik' Tarkhanov", "Danil Ivanov", "Yaroslav Markin"]
20
+ p.email = ['me@julik.nl', 'yaroslav@markin.net']
21
+ p.description = 'Simple processing of russian strings'
22
+ p.summary = 'Simple processing of russian strings'
23
+ p.remote_rdoc_dir = ''
24
+ p.need_zip = true # ненвижу
25
+ end
26
+ rutils.spec.rdoc_options += DOCOPTS
27
+
28
+ require 'load_multi_rails_rake_tasks'
29
+
30
+ rescue LoadError
31
+ $stderr.puts "Meta-operations on this package require Hoe and multi_rails"
32
+ task :default => [ :test ]
33
+
34
+ require 'rake/testtask'
35
+ desc "Run all tests (requires BlueCloth, RedCloth and Rails for integration tests)"
36
+ Rake::TestTask.new("test") do |t|
37
+ t.libs << "test"
38
+ t.pattern = 'test/t_*.rb'
39
+ t.verbose = true
40
+ end
41
+ end