rotuka-rutils 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|