rutils 0.1.2 → 0.1.3

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 CHANGED
@@ -1,3 +1,48 @@
1
+ Версия 0.1.3 - 14.11.2005
2
+ * Gilenson - замена троеточий на ellipsis (julik)
3
+ * Gilenson - теперь пробел, идущий перед одной или двумя буквами на конце слова
4
+ меняется на glyph[:nbsp]. Сделано через регексп-костыль в #process_wordglue:
5
+ text.gsub!(/(\s+)([a-zа-яА-Я]{1,2}[\)\]\!\?,\.;]{0,3}\s$)/ui, self.glyph[:nbsp]+'\2') (mash)
6
+ * Gilenson - починен баг из-за которого не типографилась закрывающая кавычка после вопросительного
7
+ и восклицательного знака (julik)
8
+ * По умолчанию используется новый Gilenson (Gilenson::Formatter). Старый доступен как Gilenson::Obsolete и через
9
+ String#o_gilensize и грузится только в случае необходимости. Если у вас были тесты провеяющие gilensize
10
+ скорее всего они "полетели" (julik)
11
+ * Gilenson - дополнительная фича, не связанная с типографикой: замена амперсанда в следующих атрибутах
12
+ тагов: href, src, data. Пример: <a href="?x=1&y=2&#38;z=3"> => <a href="?x=1&#38;y=2&#38;z=3"> (mash)
13
+ * Gilenson - изменён метод process_ampersands (стало process_escape_html), меняющий &,<,> на глифы :amp,:lt,:gt
14
+ при запрете HTML (@settings[:html]=>false). По-умолчанию Гиленсон разрешает использование HTML.
15
+ В иерархии метод выставлен первым для корректной обработки случаев вида
16
+ %{Используйте &#38; вместо &amp;}.gilensize(:html=>false) (mash)
17
+ * Gilenson - добавлены :skip_attr=>false и :skip_code=>true для управления обработкой типографики атрибутов тегов title, alt и содержимого <code/>, <tt/>, <![CDATA[...]]> (mash)
18
+ * Gilenson - добавлен :raw_output=>true для вывода обычных UTF-8 chars вместо entities (julik)
19
+ * Смена структуры модулей Gilenson (julik)
20
+ RuTils::Gilenson::Obsolete - старый класс форматтера
21
+ RuTils::Gilenson::Formatter - новый класс форматтера
22
+ При вызове RuTils::Gilenson.new возвращается новый Formatter
23
+ * Gilenson - документация (julik)
24
+ * Gilenson - основные группы настроек "по-умолчанию" выносятся в константы (julik)
25
+ * Gilenson - фильтры выносятся в методы типа process_фильтр и их можно применять по отдельности через Formatter#apply (julik)
26
+ * Gilenson - добавлены &para; и &numero; (последний - не стандарт, но нужен для преобразований символа "номер") (mash)
27
+ * Gilenson - добавлен хэш @glyph_copy_paste для подмены юникодных типографских символов на entities
28
+ (опционально, через @settings[:copypaste]=>true) (mash)
29
+ * Gilenson - добавлена "склейка" инициалов полукруглой шпацией (thin space)
30
+ * Gilenson - добавлен Formatter#process чтобы обрабатывать строки поточно, и сделан удобный доступ к настройкам
31
+ через "хвост" метода (julik)
32
+ * Во всех внутренних строковых подстановках Gilenson используются указатели на глифы с двоеточием в начале (julik)
33
+ * Gilenson - введен DOUBLE PRIME (&#8243;) для знаков дюйма (julik)
34
+ http://en.wikipedia.org/wiki/Prime_%28mark%29
35
+ Согласно изощренным правилам скошенный prime правильней чем "
36
+ * Новый Гиленсон lib/gilenson/gilenson.rb (mash)
37
+ RuTils::GilensonNew::Typografica.new('какой-то текст')
38
+ %q{"какой-то текст"}.n_gilensize
39
+ * Код приведён к "2 spaces - no tabs", частично полетели дифы (mash)
40
+ * Изменены константы дат, используемые в lib/integration/rails_date_helper_override.rb:
41
+ Было: RuTils::DateTime::ABBR_MONTHNAMES, RuTils::DateTime::INFLECTED_MONTHNAMES
42
+ Стало: Date::RU_ABBR_MONTHNAMES, Date::RU_INFLECTED_MONTHNAMES (mash)
43
+ * Добавлена функциия Numeric#rublej (julik)
44
+ * Добавлена русская версия Time#ru_strftime и Date#ru_strftime (mash)
45
+
1
46
  Версия 0.1.2 - 01.11.2005
2
47
  * Добавлен BiDi-транслит c тестами (mash)
3
48
 
data/README CHANGED
@@ -7,7 +7,7 @@ RuTils - простой обработчик русского текста на
7
7
  Весь функционал RuTils поддерживает только UTF-8 (настройка $KCODE / KanjiCode 'u'). Стандартно работа RuTils проверяется
8
8
  как на стандартной версии Ruby, так и на парсере регулярных выражений Oniguruma (правда имейте в виду, что с ним
9
9
  Gilenson работает медленнее).
10
-
10
+
11
11
  Пожалуйста упоминайте версию при сообщении ошибок. Версию RUTILS всегда можно узнать в константе
12
12
 
13
13
  RuTils::VERSION
@@ -15,7 +15,7 @@ Gilenson работает медленнее).
15
15
  Удостоверьтесь, что ваш скрипт правильно обрабатывает Unicode - то есть:
16
16
 
17
17
  * Переменная $KCODE включена в режим 'u'
18
- * В скрипт загружена библиотека jcode
18
+ * Все строки которые вы собираетесь обрабатывать уже в кодировке UTF-8
19
19
 
20
20
  Если вы используете RuTils для сайта под mod_ruby воспользуйтесь директивой RubyKanjiCode в своем httpd.conf.
21
21
 
@@ -28,15 +28,19 @@ Gilenson работает медленнее).
28
28
 
29
29
  RuTils реализует сумму прописью для целых и дробных чисел, с дополнительным учетом рода. Например:
30
30
 
31
- 4.propisju => "четыре"
32
- 345.propisju => "триста сорок пять"
33
- 231.propisju(2) => "двести тридцать одна"
34
- 341.propisju_items(1, "чемодан", "чемодана", "чемоданов") => "триста сорок один чемодан"
35
- (212.40).propisju_items(2, "сволочь", "сволочи", "сволочей") => "двести двенадцать целых четыре десятых сволочи"
36
-
31
+ 4.propisju => "четыре"
32
+ 345.propisju => "триста сорок пять"
33
+ 231.propisju(2) => "двести тридцать одна"
34
+ 341.propisju_items(1, "чемодан", "чемодана", "чемоданов") => "триста сорок один чемодан"
35
+ (212.40).propisju_items(2, "сволочь", "сволочи", "сволочей") => "двести двенадцать целых четыре десятых сволочи"
36
+
37
37
  Также реализуется выбор варианта числительного в зависимости от числа
38
38
 
39
- 15.items("кодер", "кодера", "кодеров") => "кодеров"
39
+ 15.items("кодер", "кодера", "кодеров") => "кодеров"
40
+
41
+ и вывод "суммы прописью" для денежных сумм
42
+
43
+ (413.2).rublej => "четыреста тринадцать рублей двадцать копеек"
40
44
 
41
45
  == Транслит
42
46
 
@@ -44,10 +48,10 @@ RuTils на данный момент реализует простейший т
44
48
 
45
49
  Простейший транслит "в одну сторону".
46
50
 
47
- "Вот такое вот дело".translify => "Vot takoye vot delo"
48
- "Несомненный прогресс по сравнению с PHP".dirify => "nesomnennyi-progress-po-sravneniu-s-php"
49
-
50
- == BiDi-транслит.
51
+ "Вот такое вот дело".translify => "Vot takoye vot delo"
52
+ "Несомненный прогресс по сравнению с PHP".dirify => "nesomnennyi-progress-po-sravneniu-s-php"
53
+
54
+ == BiDi-транслит
51
55
 
52
56
  Порт BiDiTranslit[http://pixel-apes.com/translit/article#h256-10] от Pixel Apes.
53
57
  Реализует транслитерацию "в обе стороны", предоставляя возможность получить валидный URL
@@ -59,48 +63,80 @@ RuTils на данный момент реализует простейший т
59
63
  * Уничтожение всех слешей, которые встретятся во входной строке. В этом случае методы вызываются с передачей в них false. Например, "Web/Скрипты".bidi_translify(false)
60
64
  * Пропуск слэшей (используется по умолчанию). Например, "Web/+Skripty".bidi_detranslify
61
65
 
62
- "WebРазработка/Скрипты".bidi_translify => "Web+Razrabotka+/+Skripty"
63
- "+Ustanovka__+mod_perl".bidi_detranslify => "Установка mod_perl"
64
- "WebРазработка/Мимо".bidi_translify(false) => "Web+RazrabotkaMimo"
65
- "+PKHP+/Scripts".bidi_translify(false) => "ПХПScripts"
66
+ "WebРазработка/Скрипты".bidi_translify => "Web+Razrabotka+/+Skripty"
67
+ "+Ustanovka__+mod_perl".bidi_detranslify => "Установка mod_perl"
68
+ "WebРазработка/Мимо".bidi_translify(false) => "Web+RazrabotkaMimo"
69
+ "+PKHP+/Scripts".bidi_detranslify(false) => "ПХПScripts"
66
70
 
67
71
  == Обработка русской типографики в HTML
68
72
 
69
73
  Gilenson - порт Typografica[http://pixel-apes.com/typografica] от
70
74
  Pixel Apes. Тыпографица - механизм автоматической расстановки подстановок в тексте
71
75
  перед его выводом в HTML, оформляющий неразрывные пробелы, типографские кавычки
72
- и реализующая элементарные макроподстановки.
76
+ и тому подобные "украшательства".
77
+
78
+ Gilenson расставит в тексте "умные" правильные кавычки (русские - для кириллицы, английские - для латиницы),
79
+ заменит "хитрые" пунктуационные символы на entities и отформатирует знаки типа (c), (tm), телефоны и адреса.
80
+
81
+ %q{"И это называется языком?", -- таков был его вопрос}.gilensize =>
82
+ "&#171;И это&#160;называется языком?&#187;, &#8212; таков был&#160;его вопрос"
73
83
 
74
- Имейте в виду, что на баги в Gilenson жаловаться разработчикам Typografica не стоит -
75
- они вас не поймут и будут правы. Поддержку Gilenson PixelApes не осуществляют.
84
+ Более подробная документация по Gilenson доступна в документах к RuTils::Gilenson::Formatter
76
85
 
77
86
  В комплекте также есть скрипт gilensize, которым можно поточно обрабатывать Unicode-тексты в среде UNIX
78
87
  пользуясь стандартным выводом
79
88
 
80
- $ cat myfile.txt | gilensize > myfile.html
89
+ $ cat myfile.txt | gilensize > myfile.html
90
+
91
+ == Даты
92
+
93
+ В класс Date введены следующие константы:
94
+ * RU_MONTHNAMES (Январь Февраль Март...)
95
+ * RU_DAYNAMES (Воскресенье Понедельник...)
96
+ * RU_ABBR_MONTHNAMES (Янв Фев Мар...)
97
+ * RU_ABBR_DAYNAMES (Вск Пн Вт Ср...)
98
+ * RU_INFLECTED_MONTHNAMES (Января Февраля Марта...)
99
+ * RU_DAYNAMES_E (первое второе третье...)
100
+
101
+ Пример использования:
102
+
103
+ require 'date'
104
+ date = Date.new(2005, 11, 9)
105
+ puts "#{Date::RU_ABBR_MONTHNAMES[date.mon]}" => Ноя
106
+ puts "#{Date::RU_MONTHNAMES[date.mon]}" => Ноябрь
107
+ puts "#{Date::RU_ABBR_DAYNAMES[date.wday]}" => Ср
108
+ puts "#{Date::RU_DAYNAMES[date.wday]}" => Среда
109
+
110
+ При включенной перезагрузке функций (RuTils::overrides_enabled) осуществляется "покрытие" стандартной
111
+ функции Time#strftime ("родную" #strftime можно продолжать использовать через alias-метод #strftime_norutils):
112
+
113
+ Time.local(2005,"dec",31).strftime("%a, %A, %b, %B") => "Сб, Суббота, Дек, Декабрь"
114
+ Time.local(2005,"dec",31).strftime_norutils("%a, %A, %b, %B") => "Sat, Saturday, Dec, December"
81
115
 
82
116
  == Интеграция с Rails, RedCloth и BlueCloth
83
117
 
84
118
  RuTils в первую очередь задумывался как максимально "прозрачный" механизм обработки русского текста
85
- в контексте Rails-приложения. Если вы используете RuTils в одном приложении с RedCloth или BlueCloth,
119
+ в контексте Rails-приложения. В связи с этим RuTils "вторгается" в работу других Ruby-модулей
120
+ и изменяет механизм их работы.
121
+
122
+ Если вы используете RuTils в одном приложении с RedCloth или BlueCloth,
86
123
  RuTils автоматически будет обрабатывать типографику во всех текстах, пропускаемых через них. Имейте в виду, что для
87
- корректной работы этой функции RuTils надо загружать после модулей RedCloth и BlueCloth.
124
+ корректной работы этой функции RuTils надо загружать *после* модулей RedCloth и BlueCloth.
88
125
 
126
+ Помимо этого RuTils заставляет следующие функции Rails говорить по-русски:
89
127
 
90
- В принципе если вы пользуетесь RedCloth или BlueCloth все что ими обрабатывается будет автоматически
91
- обрабатываться и Gilenson'ом тоже. В случае с RedCloth Glienson автоматически заменяет стандартные для
92
- Textile английские кавычки и типографские знаки на свои - русские. В случае BlueCloth Gilenson используется
93
- как "декоратор" Markdown.
128
+ * Меню выбора даты (+date_select+ и +datetime_select+) будут выводиться с русскими именами месяцев
129
+ * +distance_of_time_in_words+ будет выводить русские описания длительности ("более 2 часов")
94
130
 
95
- Перегрузку всех функций (RedCloth, BlueCloth и компоненты Rails) можно включать и отключать в любое время
96
- с помощью метода overrides= модуля RuTils. Когда перегрузка выключена, все сторонние библиотеки будут работать
131
+ Перегрузку всех функций других модулей можно включать и отключать в любое время
132
+ с помощью метода RuTils::overrides=. Когда перегрузка выключена, все сторонние библиотеки будут работать
97
133
  в стандартном режиме (например, RedCloth будет расставлять английские типографские кавычки). Это нужно
98
134
  когда вам нужно переключиться на английский (или любой другой язык) без перезапуска приложения.
99
135
 
100
- Если вы хотите использовать rutils как дополенние к Rails в одном конкретном приложении, скопируйте
136
+ Если вы хотите использовать rutils как дополнение к Rails в одном конкретном приложении, скопируйте
101
137
  директорию rutils в папку vendor/plugins вашего приложения. Вы можете воспользоваться командой
102
138
  rutilize чтобы сделать это автоматически. После этого вы сможете использовать RuTils без
103
- необходимости установки gem'а на вашем сервере.
139
+ необходимости установки gem'а на вашем сервере (не забудьте перезапустить приложение чтобы вгрузить в него RuTils).
104
140
 
105
141
  $ rutilize /Sites/my_app1 /Sites/my_app2 /Sites/my_another_app
106
142
 
@@ -116,16 +152,41 @@ rutilize чтобы сделать это автоматически. После
116
152
 
117
153
  Просто включите rutils в свою программу как gem
118
154
 
119
- require_gem 'rutils'
120
-
155
+ require_gem 'rutils'
156
+
121
157
  или как библиотеку
122
158
 
123
- require 'rutils'
124
-
159
+ require 'rutils'
160
+
125
161
  == Где получить помощь
126
162
 
127
163
  На странице проекта на RubyForge[http://rubyforge.org/projects/rutils]
128
164
 
129
165
  == Работает ли это с текстом в кодировке Windows-1251
130
166
 
131
- Нет и никогда не будет.
167
+ Нет и никогда не будет.
168
+
169
+ == Реальные проекты
170
+
171
+ В настоящее время RuTils используется на следующих сайтах:
172
+
173
+ * http://artonica.ru
174
+ * http://radar.cinemac.ru
175
+
176
+ Если вы используете RuTils в своей работе пожалуйста сообщайте нам об этом чтобы мы могли включить ваши приложения и сайты в список.
177
+
178
+ == Как ускорить реализацию новых функций
179
+
180
+ Воспользуйтесь трекером на RubyForge. Опишите нужный вам функционал и приложите (по возможности) тесты, которым этот функционал должен удовлетворять. Схему организации тестов вы можете скопировать из собственных тестов RuTils.
181
+
182
+ Если вы пишете исходный код, который войдет в RuTils или в тестовые наборы, пожалуйста следуйте следующим правилам оформления кода:
183
+
184
+ * Unix line breaks (LF)
185
+ * Кодировка файлов - строго UTF-8 без BOM (Byte Order Mark)
186
+ * Отступы в 2 пробела, без табуляций.
187
+ * Однострочные блоки с фигурными скобками, многострочные - с +do ... end+
188
+ * Все другие конвенции нормального написания Ruby-кода (http://www.rubygarden.org/ruby/ruby?RubyStyleGuide)
189
+
190
+ Мы используем пробелы поскольку табулятор означает автозаполнение в IRB (Interactive Ruby Shell)
191
+
192
+ Если вы хотите участвовать в разработке RuTils пользуйтесь CVS проекта.
data/TODO CHANGED
@@ -2,25 +2,10 @@
2
2
 
3
3
  ==Gilenson
4
4
 
5
- * Заменить все entities в Гиленсоне на UTF-эквиваленты (в том числе и в тестах)
6
- (пока генерируемый им код содержит, например, raquo и nbsp - неприменимо для XML)
7
- * Выяснить, стоит ли отрабатывать типографику в атрибутах тегов
8
- * Полностью рефакторнуть (вынести каждую трансформацию в метод)
9
- * чтобы тестить трансформации по одной
10
- * чтобы применять трансформации по одной буде на то нужда
11
-
12
5
  ==Pluralization
13
6
 
14
7
  * Истинная плюрализация без передачи рода и вариантов (как в Rails)
15
8
 
16
- ==Даты
17
-
18
- * В принципе нужно обеспечить полноценное покрытие stfmt
19
-
20
9
  ==Rails
21
10
 
22
- * distance_of_time_in_words и тому подобные
23
-
24
- ==Транслит
25
-
26
- * bidi-транслит (Данил)
11
+ * закончить меню выбора стран и начинать помогать делать Multilingual Rails
data/bin/gilensize CHANGED
@@ -14,5 +14,5 @@ require File.dirname(__FILE__) + '/../lib/rutils'
14
14
  # Julik <me@julik.nl>
15
15
 
16
16
  while st = gets do
17
- puts RuTils::Gilenson::Formatter.new(st).to_html
17
+ puts RuTils::Gilenson.new(st).to_html
18
18
  end