rotuka-rutils 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +110 -0
- data/README +202 -0
- data/Rakefile.rb +128 -0
- data/TODO +11 -0
- data/bin/gilensize +18 -0
- data/bin/rutilize +38 -0
- data/init.rb +6 -0
- data/lib/countries/countries.rb +1772 -0
- data/lib/datetime/datetime.rb +87 -0
- data/lib/gilenson/gilenson.rb +642 -0
- data/lib/gilenson/gilenson_port.rb +321 -0
- data/lib/integration/blue_cloth_override.rb +12 -0
- data/lib/integration/integration.rb +32 -0
- data/lib/integration/rails_date_helper_override.rb +113 -0
- data/lib/integration/red_cloth_override.rb +27 -0
- data/lib/pluralizer/pluralizer.rb +236 -0
- data/lib/rutils.rb +32 -0
- data/lib/transliteration/bidi.rb +71 -0
- data/lib/transliteration/simple.rb +74 -0
- data/lib/transliteration/transliteration.rb +51 -0
- data/test/run_tests.rb +4 -0
- data/test/t_datetime.rb +42 -0
- data/test/t_gilenson.rb +371 -0
- data/test/t_integration.rb +125 -0
- data/test/t_pluralize.rb +69 -0
- data/test/t_rutils_base.rb +10 -0
- data/test/t_transliteration.rb +109 -0
- data/test/t_typografica.rb +57 -0
- metadata +92 -0
data/CHANGELOG
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
* До свидания, <nobr>. Указывайте .nobr { text-wrap: nowrap } в своих стилевых таблицах.
|
2
|
+
|
3
|
+
Версия 0.2.3 - 27.09.2007
|
4
|
+
* Кошмар - в новой версии rubygems изменилась семантика s.files из-за чего мы забыли
|
5
|
+
все файлы в корневой директории - включая init.rb (julik)
|
6
|
+
|
7
|
+
Версия 0.2.2 - 24.09.2007
|
8
|
+
* Gilenson - обрабатываем акронимы по принципу Textile (zajats, julik)
|
9
|
+
* Gilenson - отформатирован под 2 пробела (julik)
|
10
|
+
* В тестах пользуйтесь assert_equal_cp (julik)
|
11
|
+
* Welcome to subversion (julik)
|
12
|
+
|
13
|
+
Версия 0.2.1 - 02.04.2007
|
14
|
+
* Восстановлен в gemspec gilenson.rb (Сергей Барабаш)
|
15
|
+
|
16
|
+
Версия 0.2.0 - 02.04.2007
|
17
|
+
* Фикс squeeze в dirify (Сергей Барабаш)
|
18
|
+
* Формат даты по умолчанию - %F (Сергей Барабаш)
|
19
|
+
|
20
|
+
Версия 0.1.9 - 17.02.2007
|
21
|
+
* Gilenson integration - не съедаем пробелы между тегами при прогоне текста через Textile
|
22
|
+
|
23
|
+
Версия 0.1.8 - 05.02.2007
|
24
|
+
* Gilenson - расстановка инициалов не должна цеплять аббревиатуры (julik)
|
25
|
+
|
26
|
+
Версия 0.1.7 - 05.02.2007
|
27
|
+
* Date helpers приведены в более веселый вид (и в соответствие с Rails 1.2.1) (julik)
|
28
|
+
* date_helper надо поменять чтобы передавать рельсовому хелперу весь массив options в хеше (julik)
|
29
|
+
|
30
|
+
Версия 0.1.6 - 18.08.2006
|
31
|
+
* Удалили jcode, он нам не сильно нужен (julik)
|
32
|
+
* В простом транслите Шипилов - Schipilov вместо SCHipilov (julik)
|
33
|
+
* Тесты интеграции валятся явно и громко если зависимые модули на машине отсутствуют (julik)
|
34
|
+
* Масса крошечных твиков чтобы сделать все немножко аккуратнее (julik)
|
35
|
+
* Родительный падеж (RU_INFLECTED_MONTHNAMES) для месяцев после числа (%d %B == 31 декабря) в strftime (mash)
|
36
|
+
|
37
|
+
Версия 0.1.5 - 08.05.2006
|
38
|
+
* Транслитераторы вынесены в отдельные файлы (julik)
|
39
|
+
* Починен баг с передачей часа в нужном падеже в distance_of_time (anonyomous)
|
40
|
+
* Добавлены корректные методы публикации доков, сменены параметры их генерации (julik)
|
41
|
+
* cp -r заменен на cp_r чтобы rutilize работал в Windows (anonymous)
|
42
|
+
* Имена месяцев со строчной буквы (sgt - http://rubyforge.org/users/sgt)
|
43
|
+
* Поддерживаем оба класса Locale (из ruby-locale и gettext - они немного отличаются по семантике) (julik)
|
44
|
+
|
45
|
+
|
46
|
+
Версия 0.1.4 - 02.12.2005
|
47
|
+
* Поправлен импорт Rails-плагина (julik)
|
48
|
+
* Поправлен паттерн сбора тестируемых файлов (julik)
|
49
|
+
* Gilenson - на Oniguruma сбоит skip_code, но это надо побарывать нормальным токенизатором, пока откладывается (julik)
|
50
|
+
* Gilenson - в тестах произведена замена <cOdE> на <code> и <TT> на <tt> (mash)
|
51
|
+
* Gilenson - в двух регулярных выражениях (в "def process_quotes") изменен #{@mark_tag} на
|
52
|
+
\#{@mark_tag} чтобы предотвратить segfault ruby 1.8.2 (2004-12-25) на [i386-mswin32] (mash)
|
53
|
+
* Gilenson - починен дикий баг с маркером в одинарных кавычках - теперь таки последовательность байтов вместо символов (julik)
|
54
|
+
* DateTime - RU_INFLECTED_MONTHNAMES => Авгуса --> Августа (mash)
|
55
|
+
|
56
|
+
Версия 0.1.3 - 14.11.2005
|
57
|
+
* Gilenson - замена троеточий на ellipsis (julik)
|
58
|
+
* Gilenson - теперь пробел, идущий перед одной или двумя буквами на конце слова
|
59
|
+
меняется на glyph[:nbsp]. (mash)
|
60
|
+
* Gilenson - починен баг из-за которого не типографилась закрывающая кавычка после вопросительного
|
61
|
+
и восклицательного знака (julik)
|
62
|
+
* По умолчанию используется новый Gilenson (Gilenson::Formatter). Старый доступен как Gilenson::Obsolete и через
|
63
|
+
String#o_gilensize и грузится только в случае необходимости. Если у вас были тесты провеяющие gilensize
|
64
|
+
скорее всего они "полетели" (julik)
|
65
|
+
* Gilenson - дополнительная фича, не связанная с типографикой: замена амперсанда в следующих атрибутах
|
66
|
+
тагов: href, src, data. Пример: <a href="?x=1&y=2&z=3"> => <a href="?x=1&y=2&z=3"> (mash)
|
67
|
+
* Gilenson - изменён метод process_ampersands (стало process_escape_html), меняющий &,<,> на глифы :amp,:lt,:gt
|
68
|
+
при запрете HTML (@settings[:html]=>false). По-умолчанию Гиленсон разрешает использование HTML.
|
69
|
+
В иерархии метод выставлен первым для корректной обработки случаев вида
|
70
|
+
%{Используйте & вместо &}.gilensize(:html=>false) (mash)
|
71
|
+
* Gilenson - добавлены :skip_attr=>false и :skip_code=>true для управления обработкой типографики атрибутов тегов title, alt и содержимого <code/>, <tt/>, <![CDATA[...]]> (mash)
|
72
|
+
* Gilenson - добавлен :raw_output=>true для вывода обычных UTF-8 chars вместо entities (julik)
|
73
|
+
* Смена структуры модулей Gilenson (julik)
|
74
|
+
RuTils::Gilenson::Obsolete - старый класс форматтера
|
75
|
+
RuTils::Gilenson::Formatter - новый класс форматтера
|
76
|
+
При вызове RuTils::Gilenson.new возвращается новый Formatter
|
77
|
+
* Gilenson - документация (julik)
|
78
|
+
* Gilenson - основные группы настроек "по-умолчанию" выносятся в константы (julik)
|
79
|
+
* Gilenson - фильтры выносятся в методы типа process_фильтр и их можно применять по отдельности через Formatter#apply (julik)
|
80
|
+
* Gilenson - добавлены ¶ и № (последний - не стандарт, но нужен для преобразований символа "номер") (mash)
|
81
|
+
* Gilenson - добавлен хэш @glyph_copy_paste для подмены юникодных типографских символов на entities
|
82
|
+
(опционально, через @settings[:copypaste]=>true) (mash)
|
83
|
+
* Gilenson - добавлена "склейка" инициалов полукруглой шпацией (thin space)
|
84
|
+
* Gilenson - добавлен Formatter#process чтобы обрабатывать строки поточно, и сделан удобный доступ к настройкам
|
85
|
+
через "хвост" метода (julik)
|
86
|
+
* Во всех внутренних строковых подстановках Gilenson используются указатели на глифы с двоеточием в начале (julik)
|
87
|
+
* Gilenson - введен DOUBLE PRIME (″) для знаков дюйма (julik)
|
88
|
+
http://en.wikipedia.org/wiki/Prime_%28mark%29
|
89
|
+
Согласно изощренным правилам скошенный prime правильней чем "
|
90
|
+
* Новый Гиленсон lib/gilenson/gilenson.rb (mash)
|
91
|
+
RuTils::GilensonNew::Typografica.new('какой-то текст')
|
92
|
+
%q{"какой-то текст"}.n_gilensize
|
93
|
+
* Код приведён к "2 spaces - no tabs", частично полетели дифы (mash)
|
94
|
+
* Изменены константы дат, используемые в lib/integration/rails_date_helper_override.rb:
|
95
|
+
Было: RuTils::DateTime::ABBR_MONTHNAMES, RuTils::DateTime::INFLECTED_MONTHNAMES
|
96
|
+
Стало: Date::RU_ABBR_MONTHNAMES, Date::RU_INFLECTED_MONTHNAMES (mash)
|
97
|
+
* Добавлена функциия Numeric#rublej (julik)
|
98
|
+
* Добавлена русская версия Time#ru_strftime и Date#ru_strftime (mash)
|
99
|
+
|
100
|
+
Версия 0.1.2 - 01.11.2005
|
101
|
+
* Добавлен BiDi-транслит c тестами (mash)
|
102
|
+
|
103
|
+
Версия 0.04 - 20.10.2005
|
104
|
+
* Чистка документации
|
105
|
+
|
106
|
+
Версия 0.03 - 18.10.2005
|
107
|
+
* Легкий рефакторинг и чистка документации, добавлена реализация BiDi-транслита
|
108
|
+
|
109
|
+
Версия 0.02 - 12.07.2005
|
110
|
+
* Заменен маркер подстановки тегов в Gilenson. Ранее без oniguruma из-за его применения "проглатывалась" буква "р"
|
data/README
ADDED
@@ -0,0 +1,202 @@
|
|
1
|
+
== Добро пожаловать в RuTils
|
2
|
+
|
3
|
+
RuTils - простой обработчик русского текста на Ruby. Основная цель RuTils -
|
4
|
+
сделать разработку русскоязычных приложений на Ruby (и Rails) максимально простой
|
5
|
+
и приятной (в идеале - столь же простой как и разработку оных на английском)
|
6
|
+
|
7
|
+
Весь функционал RuTils поддерживает только UTF-8 (настройка $KCODE / KanjiCode
|
8
|
+
'u').
|
9
|
+
|
10
|
+
Пожалуйста упоминайте версию при сообщении ошибок. Версию RUTILS всегда можно
|
11
|
+
узнать в константе
|
12
|
+
|
13
|
+
RuTils::VERSION
|
14
|
+
|
15
|
+
Удостоверьтесь, что ваш скрипт правильно обрабатывает Unicode - то есть:
|
16
|
+
|
17
|
+
* Переменная $KCODE включена в режим 'u'
|
18
|
+
* Все строки которые вы собираетесь обрабатывать уже в кодировке UTF-8
|
19
|
+
|
20
|
+
Если вы используете RuTils для сайта под mod_ruby воспользуйтесь директивой
|
21
|
+
RubyKanjiCode в своем httpd.conf.
|
22
|
+
|
23
|
+
Большое спасибо Роману Иванову aka Kukutz и Николаю Яремко aka Kuso Mendokuzee за
|
24
|
+
реализацию большинства алгоритмов на PHP.
|
25
|
+
|
26
|
+
Разработку RuTils ведут Julik[http://julik.nl] и Mash[http://imfo.ru]
|
27
|
+
|
28
|
+
== Cумма прописью и выбор числительного
|
29
|
+
|
30
|
+
RuTils реализует сумму прописью для целых и дробных чисел, с дополнительным
|
31
|
+
учетом рода. Например:
|
32
|
+
|
33
|
+
4.propisju => "четыре"
|
34
|
+
345.propisju => "триста сорок пять"
|
35
|
+
231.propisju(2) => "двести тридцать одна"
|
36
|
+
341.propisju_items(1, "чемодан", "чемодана", "чемоданов") => "триста сорок один чемодан"
|
37
|
+
(212.40).propisju_items(2, "сволочь", "сволочи", "сволочей") => "двести двенадцать целых
|
38
|
+
четыре десятых сволочи"
|
39
|
+
|
40
|
+
Также реализуется выбор варианта числительного в зависимости от числа
|
41
|
+
|
42
|
+
15.items("кодер", "кодера", "кодеров") => "кодеров"
|
43
|
+
|
44
|
+
и вывод "суммы прописью" для денежных сумм в рублях
|
45
|
+
|
46
|
+
(413.2).rublej => "четыреста тринадцать рублей двадцать копеек"
|
47
|
+
|
48
|
+
== Транслит
|
49
|
+
|
50
|
+
RuTils на данный момент реализует простейший транслит "в одну сторону" и
|
51
|
+
"взаимно-однозначный транслит" (BiDi-транслит).
|
52
|
+
|
53
|
+
Простейший транслит "в одну сторону".
|
54
|
+
|
55
|
+
"Вот такое вот дело".translify => "Vot takoye vot delo" "Несомненный прогресс по
|
56
|
+
сравнению с PHP".dirify => "nesomnennyi-progress-po-sravneniu-s-php"
|
57
|
+
|
58
|
+
== BiDi-транслит
|
59
|
+
|
60
|
+
Порт BiDiTranslit[http://pixel-apes.com/translit/article#h256-10] от Pixel Apes.
|
61
|
+
Реализует транслитерацию "в обе стороны", предоставляя возможность получить
|
62
|
+
валидный URL из строки, содержащей русские и английские буквы. С некоторыми
|
63
|
+
потерями (запятых и прочих "слабозначащих" символов) возможно восстановление
|
64
|
+
исходной строки.
|
65
|
+
|
66
|
+
Два режима работы:
|
67
|
+
|
68
|
+
* Уничтожение всех слешей, которые встретятся во входной строке. В этом случае
|
69
|
+
методы вызываются с передачей в них false. Например,
|
70
|
+
"Web/Скрипты".bidi_translify(false) * Пропуск слэшей (используется по умолчанию).
|
71
|
+
Например, "Web/+Skripty".bidi_detranslify
|
72
|
+
|
73
|
+
"WebРазработка/Скрипты".bidi_translify => "Web+Razrabotka+/+Skripty"
|
74
|
+
"+Ustanovka__+mod_perl".bidi_detranslify => "Установка mod_perl"
|
75
|
+
"WebРазработка/Мимо".bidi_translify(false) => "Web+RazrabotkaMimo"
|
76
|
+
"+PKHP+/Scripts".bidi_detranslify(false) => "ПХПScripts"
|
77
|
+
|
78
|
+
== Обработка русской типографики в HTML
|
79
|
+
|
80
|
+
Gilenson - порт Typografica[http://pixel-apes.com/typografica] от Pixel Apes.
|
81
|
+
Тыпографица - механизм автоматической расстановки подстановок в тексте перед его
|
82
|
+
выводом в HTML, оформляющий неразрывные пробелы, типографские кавычки и тому
|
83
|
+
подобные "украшательства".
|
84
|
+
|
85
|
+
Gilenson расставит в тексте "умные" правильные кавычки (русские - для кириллицы,
|
86
|
+
английские - для латиницы), заменит "хитрые" пунктуационные символы на entities и
|
87
|
+
отформатирует знаки типа (c), (tm), телефоны и адреса.
|
88
|
+
|
89
|
+
%q{"И это называется языком?", -- таков был его вопрос}.gilensize => "«И
|
90
|
+
это называется языком?», — таков был его вопрос"
|
91
|
+
|
92
|
+
Более подробная документация по Gilenson доступна в документах к
|
93
|
+
RuTils::Gilenson::Formatter
|
94
|
+
|
95
|
+
В комплекте также есть скрипт gilensize, которым можно поточно обрабатывать
|
96
|
+
Unicode-тексты в среде UNIX пользуясь стандартным выводом
|
97
|
+
|
98
|
+
$ cat myfile.txt | gilensize > myfile.html
|
99
|
+
|
100
|
+
== Даты
|
101
|
+
|
102
|
+
В класс Date введены следующие константы:
|
103
|
+
|
104
|
+
* RU_MONTHNAMES (Январь Февраль Март...)
|
105
|
+
* RU_DAYNAMES (Воскресенье Понедельник...)
|
106
|
+
* RU_ABBR_MONTHNAMES (Янв Фев Мар...)
|
107
|
+
* RU_ABBR_DAYNAMES (Вск Пн Вт Ср...)
|
108
|
+
* RU_INFLECTED_MONTHNAMES (Января Февраля Марта...)
|
109
|
+
* RU_DAYNAMES_E (первое второе третье...)
|
110
|
+
|
111
|
+
Пример использования:
|
112
|
+
|
113
|
+
require 'date' date = Date.new(2005, 11, 9)
|
114
|
+
puts "#{Date::RU_ABBR_MONTHNAMES[date.mon]}" => Ноя puts
|
115
|
+
puts "#{Date::RU_MONTHNAMES[date.mon]}" => Ноябрь
|
116
|
+
puts "#{Date::RU_ABBR_DAYNAMES[date.wday]}" => Ср
|
117
|
+
puts "#{Date::RU_DAYNAMES[date.wday]}" => Среда
|
118
|
+
|
119
|
+
При включенной перезагрузке функций (RuTils::overrides_enabled) осуществляется
|
120
|
+
"покрытие" стандартной функции Time#strftime ("родную" #strftime можно продолжать
|
121
|
+
использовать через alias-метод #strftime_norutils):
|
122
|
+
|
123
|
+
Time.local(2005,"dec",31).strftime("%a, %A, %b, %B") => "Сб, Суббота, Дек, Декабрь"
|
124
|
+
Time.local(2005,"dec",31).strftime_norutils("%a, %A, %b, %B") => "Sat, Saturday, Dec, December"
|
125
|
+
|
126
|
+
== Интеграция с Rails, RedCloth и BlueCloth
|
127
|
+
|
128
|
+
RuTils в первую очередь задумывался как максимально "прозрачный" механизм
|
129
|
+
обработки русского текста в контексте Rails-приложения. В связи с этим RuTils
|
130
|
+
"вторгается" в работу других Ruby-модулей и изменяет механизм их работы.
|
131
|
+
|
132
|
+
Если вы используете RuTils в одном приложении с RedCloth или BlueCloth, RuTils
|
133
|
+
автоматически будет обрабатывать типографику во всех текстах, пропускаемых через
|
134
|
+
них. Имейте в виду, что для корректной работы этой функции RuTils надо загружать
|
135
|
+
*после* модулей RedCloth и BlueCloth.
|
136
|
+
|
137
|
+
Помимо этого RuTils заставляет следующие функции Rails говорить по-русски:
|
138
|
+
|
139
|
+
* Меню выбора даты (+date_select+ и +datetime_select+)
|
140
|
+
будут выводиться с русскими именами месяцев
|
141
|
+
* +distance_of_time_in_words+ будет выводить
|
142
|
+
русские описания длительности ("более 2 часов")
|
143
|
+
|
144
|
+
Перегрузку всех функций других модулей можно включать и отключать в любое время с
|
145
|
+
помощью метода RuTils::overrides=. Когда перегрузка выключена, все сторонние
|
146
|
+
библиотеки будут работать в стандартном режиме (например, RedCloth будет
|
147
|
+
расставлять английские типографские кавычки). Это нужно когда вам нужно
|
148
|
+
переключиться на английский (или любой другой язык) без перезапуска приложения.
|
149
|
+
|
150
|
+
Если вы хотите использовать rutils как дополнение к Rails в одном конкретном
|
151
|
+
приложении, скопируйте директорию rutils в папку vendor/plugins вашего
|
152
|
+
приложения. Вы можете воспользоваться командой rutilize чтобы сделать это
|
153
|
+
автоматически. После этого вы сможете использовать RuTils без необходимости
|
154
|
+
установки gem на вашем сервере (не забудьте перезапустить приложение чтобы
|
155
|
+
вгрузить в него RuTils).
|
156
|
+
|
157
|
+
$ rutilize /Sites/my_app1 /Sites/my_app2 /Sites/my_another_app
|
158
|
+
|
159
|
+
Вы можете свободно распространять RuTils со своим Rails-приложением при условии
|
160
|
+
сохранения структуры и файла README.
|
161
|
+
|
162
|
+
== Требования
|
163
|
+
|
164
|
+
* Ruby 1.8.2, немного прямых рук.
|
165
|
+
* Rake[http://rake.rubyforge.org],
|
166
|
+
|
167
|
+
Rails[http://rubyonrails.org],
|
168
|
+
RedCloth[http://www.whytheluckystiff.net/ruby/redcloth/] и
|
169
|
+
BlueCloth[http://www.deveiate.org/projects/BlueCloth] для выполнения тестов
|
170
|
+
|
171
|
+
== Как использовать
|
172
|
+
|
173
|
+
Просто включите rutils в свою программу как библиотеку
|
174
|
+
|
175
|
+
require 'rutils'
|
176
|
+
|
177
|
+
== Где получить помощь
|
178
|
+
|
179
|
+
На странице проекта на RubyForge[http://rubyforge.org/projects/rutils]
|
180
|
+
|
181
|
+
== Работает ли это с текстом в кодировке Windows-1251
|
182
|
+
|
183
|
+
Нет и никогда не будет.
|
184
|
+
|
185
|
+
== Как ускорить реализацию новых функций
|
186
|
+
|
187
|
+
Воспользуйтесь трекером на RubyForge. Опишите нужный вам функционал и приложите
|
188
|
+
тесты, которым этот функционал должен удовлетворять. Схему организации тестов вы
|
189
|
+
можете скопировать из собственных тестов RuTils.
|
190
|
+
|
191
|
+
Если вы пишете исходный код, который войдет в RuTils или в тестовые наборы,
|
192
|
+
пожалуйста следуйте следующим правилам оформления кода:
|
193
|
+
|
194
|
+
* Unix line breaks (LF)
|
195
|
+
* Кодировка файлов - строго UTF-8 без BOM (Byte Order Mark)
|
196
|
+
* Отступы в 2 пробела, без табуляций.
|
197
|
+
* Однострочные блоки с фигурными скобками, многострочные - с +do ... end+
|
198
|
+
* Все другие конвенции нормального написания
|
199
|
+
Ruby-кода (http://www.rubygarden.org/ruby/ruby?RubyStyleGuide)
|
200
|
+
|
201
|
+
Если вы хотите участвовать в разработке RuTils пользуйтесь версией из subversion
|
202
|
+
trunk.
|
data/Rakefile.rb
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/testtask'
|
4
|
+
require 'rake/rdoctask'
|
5
|
+
require 'rake/packagetask'
|
6
|
+
require 'rake/gempackagetask'
|
7
|
+
require 'rake/contrib/rubyforgepublisher'
|
8
|
+
require 'fileutils'
|
9
|
+
require 'lib/rutils'
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'xforge'
|
13
|
+
rescue LoadError
|
14
|
+
end
|
15
|
+
|
16
|
+
PKG_BUILD = ENV['PKG_BUILD'] ? '.' + ENV['PKG_BUILD'] : ''
|
17
|
+
PKG_NAME = 'rutils'
|
18
|
+
PKG_VERSION = RuTils::VERSION
|
19
|
+
PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
|
20
|
+
PKG_DESTINATION = "../#{PKG_NAME}"
|
21
|
+
PKG_SUMMARY = %q{ Simple processing of russian strings }
|
22
|
+
PKG_DESCRIPTION = %q{ Allows simple processing of russian strings - transliteration, numerals as text and HTML beautification }
|
23
|
+
PKG_HOMEPAGE = 'http://rubyforge.org/projects/rutils'
|
24
|
+
PKG_EMAIL = 'me@julik.nl'
|
25
|
+
PKG_MAINTAINER = 'Julian "Julik" Tarkhanov'
|
26
|
+
|
27
|
+
RELEASE_NAME = "rutils-#{PKG_VERSION}"
|
28
|
+
|
29
|
+
RUBY_FORGE_PROJECT = "rutils"
|
30
|
+
RUBY_FORGE_USER = ENV['RUBY_FORGE_USER'] ? ENV['RUBY_FORGE_USER'] : "julik"
|
31
|
+
|
32
|
+
# нам нужна документация в Юникоде. А вы думали?
|
33
|
+
PKG_RDOC_OPTS = ['--main=README',
|
34
|
+
'--line-numbers',
|
35
|
+
'--webcvs=http://rubyforge.org/cgi-bin/viewcvs.cgi/rutils/%s?cvsroot=rutils',
|
36
|
+
'--charset=utf-8',
|
37
|
+
'--promiscuous']
|
38
|
+
|
39
|
+
task :default => [ :test ]
|
40
|
+
|
41
|
+
desc "Run all tests (requires BlueCloth, RedCloth and Rails for integration tests)"
|
42
|
+
Rake::TestTask.new("test") { |t|
|
43
|
+
t.libs << "test"
|
44
|
+
t.pattern = 'test/t_*.rb'
|
45
|
+
t.verbose = true
|
46
|
+
}
|
47
|
+
|
48
|
+
desc "Report KLOCs"
|
49
|
+
task :stats do
|
50
|
+
require 'code_statistics'
|
51
|
+
CodeStatistics.new(
|
52
|
+
["Libraries", "lib"],
|
53
|
+
["Units", "test"]
|
54
|
+
).to_s
|
55
|
+
end
|
56
|
+
|
57
|
+
desc "Generate RDoc documentation"
|
58
|
+
Rake::RDocTask.new("doc") do |rdoc|
|
59
|
+
rdoc.rdoc_dir = 'doc'
|
60
|
+
rdoc.title = PKG_SUMMARY
|
61
|
+
rdoc.rdoc_files.include('README')
|
62
|
+
rdoc.rdoc_files.include('CHANGELOG')
|
63
|
+
rdoc.rdoc_files.include('TODO')
|
64
|
+
rdoc.options = PKG_RDOC_OPTS
|
65
|
+
rdoc.rdoc_files.include FileList['lib/*.rb', 'lib/**/*.rb']
|
66
|
+
end
|
67
|
+
|
68
|
+
spec = Gem::Specification.new do |s|
|
69
|
+
s.platform = Gem::Platform::RUBY
|
70
|
+
s.name = PKG_NAME
|
71
|
+
s.summary = PKG_SUMMARY
|
72
|
+
s.description = PKG_DESCRIPTION
|
73
|
+
s.version = PKG_VERSION
|
74
|
+
|
75
|
+
s.author = PKG_MAINTAINER
|
76
|
+
s.email = PKG_EMAIL
|
77
|
+
s.rubyforge_project = RUBY_FORGE_PROJECT
|
78
|
+
s.homepage = PKG_HOMEPAGE
|
79
|
+
|
80
|
+
s.has_rdoc = true
|
81
|
+
s.files = FileList["{bin,test,lib}/**/*"].exclude("rdoc").exclude(".svn").exclude(".CVS").exclude(".DS_Store").to_a +
|
82
|
+
%w(CHANGELOG init.rb Rakefile.rb README TODO)
|
83
|
+
s.require_path = "lib"
|
84
|
+
s.autorequire = "rutils"
|
85
|
+
s.test_file = "test/run_tests.rb"
|
86
|
+
s.has_rdoc = true
|
87
|
+
s.extra_rdoc_files = ["README", "TODO", "CHANGELOG"]
|
88
|
+
s.rdoc_options = PKG_RDOC_OPTS
|
89
|
+
s.executables << 'gilensize'
|
90
|
+
s.executables << 'rutilize'
|
91
|
+
end
|
92
|
+
|
93
|
+
Rake::GemPackageTask.new(spec) do |p|
|
94
|
+
p.gem_spec = spec
|
95
|
+
p.need_tar = true
|
96
|
+
p.need_zip = true
|
97
|
+
end
|
98
|
+
|
99
|
+
|
100
|
+
desc "Remove packaging products (doc and pkg) - they are not source-managed"
|
101
|
+
task :clobber do
|
102
|
+
`rm -rf ./doc`
|
103
|
+
`rm -rf ./pkg`
|
104
|
+
end
|
105
|
+
|
106
|
+
desc "Publish the new docs"
|
107
|
+
task :publish_docs => [:clobber, :doc] do
|
108
|
+
push_docs
|
109
|
+
end
|
110
|
+
|
111
|
+
desc "Push docs to servers"
|
112
|
+
task :push_docs do
|
113
|
+
user = "#{ENV['USER']}@rubyforge.org"
|
114
|
+
project = '/var/www/gforge-projects/rutils'
|
115
|
+
local_dir = 'doc'
|
116
|
+
[
|
117
|
+
Rake::SshDirPublisher.new( user, project, local_dir),
|
118
|
+
Rake::SshDirPublisher.new('julik', '~/www/code/rutils', local_dir),
|
119
|
+
|
120
|
+
].each { |p| p.upload }
|
121
|
+
end
|
122
|
+
|
123
|
+
|
124
|
+
desc "Publish the release files to RubyForge."
|
125
|
+
task :release => [:clobber, :package] do
|
126
|
+
cvs_aware_revision = 'r_' + PKG_VERSION.gsub(/-|\./, '_')
|
127
|
+
`cvs tag #{cvs_aware_revision} .`
|
128
|
+
end
|