rutils 0.1.5 → 0.1.6
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 +10 -1
- data/TODO +0 -6
- data/lib/datetime/datetime.rb +1 -0
- data/lib/gilenson/gilenson.rb +10 -19
- data/lib/integration/integration.rb +3 -1
- data/lib/integration/red_cloth_override.rb +2 -2
- data/lib/rutils.rb +5 -7
- data/lib/transliteration/bidi.rb +1 -1
- data/lib/transliteration/simple.rb +42 -22
- data/test/t_datetime.rb +2 -1
- data/test/t_integration.rb +23 -3
- data/test/t_transliteration.rb +18 -1
- metadata +2 -2
data/CHANGELOG
CHANGED
@@ -1,4 +1,13 @@
|
|
1
|
-
|
1
|
+
CVS
|
2
|
+
|
3
|
+
Версия 0.1.6 - 18.08.2006
|
4
|
+
* Удалили jcode, он нам не сильно нужен (julik)
|
5
|
+
* В простом транслите Шипилов - Schipilov вместо SCHipilov (julik)
|
6
|
+
* Тесты интеграции валятся явно и громко если зависимые модули на машине отсутствуют (julik)
|
7
|
+
* Масса крошечных твиков чтобы сделать все немножко аккуратнее (julik)
|
8
|
+
* Родительный падеж (RU_INFLECTED_MONTHNAMES) для месяцев после числа (%d %B == 31 декабря) в strftime (mash)
|
9
|
+
|
10
|
+
Версия 0.1.5 - 08.05.2006
|
2
11
|
* Транслитераторы вынесены в отдельные файлы (julik)
|
3
12
|
* Починен баг с передачей часа в нужном падеже в distance_of_time (anonyomous)
|
4
13
|
* Добавлены корректные методы публикации доков, сменены параметры их генерации (julik)
|
data/TODO
CHANGED
@@ -2,16 +2,10 @@
|
|
2
2
|
|
3
3
|
==Даты
|
4
4
|
|
5
|
-
* Применять INFLECTED_MONTHNAMES если имя месяца следует за днем
|
6
|
-
|
7
5
|
==Gilenson
|
8
6
|
|
9
|
-
* Пара красивых примеров в README
|
10
|
-
|
11
7
|
==Pluralization
|
12
8
|
|
13
9
|
* Истинная плюрализация без передачи рода и вариантов (как в Rails)
|
14
10
|
|
15
11
|
==Rails
|
16
|
-
|
17
|
-
* закончить меню выбора стран и начинать помогать делать Multilingual Rails
|
data/lib/datetime/datetime.rb
CHANGED
@@ -39,6 +39,7 @@ module RuTils
|
|
39
39
|
date.gsub!(/%a/, Date::RU_ABBR_DAYNAMES[time.wday])
|
40
40
|
date.gsub!(/%A/, Date::RU_DAYNAMES[time.wday])
|
41
41
|
date.gsub!(/%b/, Date::RU_ABBR_MONTHNAMES[time.mon])
|
42
|
+
date.gsub!(/%d(\s)*%B/, time.day.to_s + '\1' + Date::RU_INFLECTED_MONTHNAMES[time.mon])
|
42
43
|
date.gsub!(/%B/, Date::RU_MONTHNAMES[time.mon])
|
43
44
|
date.gsub!(@@ignored, '%%')
|
44
45
|
end
|
data/lib/gilenson/gilenson.rb
CHANGED
@@ -183,7 +183,7 @@ class RuTils::Gilenson::Formatter
|
|
183
183
|
|
184
184
|
# Для маркера мы применяем invalid UTF-sequence чтобы его НЕЛЬЗЯ было перепутать с частью
|
185
185
|
# любого другого мультибайтного глифа. Thanks to huNter.
|
186
|
-
REPLACEMENT_MARKER =
|
186
|
+
REPLACEMENT_MARKER = RuTils::SUBSTITUTION_MARKER #:nodoc:
|
187
187
|
|
188
188
|
# Кто придумал “? Не учите людей плохому...
|
189
189
|
# Привет А.Лебедеву http://www.artlebedev.ru/kovodstvo/62/
|
@@ -375,8 +375,7 @@ class RuTils::Gilenson::Formatter
|
|
375
375
|
|
376
376
|
# Позволяет получить процедуру, при вызове возвращающую значение глифа
|
377
377
|
def lookup(glyph_to_lookup)
|
378
|
-
|
379
|
-
return Proc.new { gil.glyph[glyph_to_lookup] }
|
378
|
+
return Proc.new { self.glyph[glyph_to_lookup] }
|
380
379
|
end
|
381
380
|
|
382
381
|
# Подставляет "символы" (двоеточие + имя глифа) на нужное значение глифа заданное в данном форматтере
|
@@ -411,7 +410,7 @@ class RuTils::Gilenson::Formatter
|
|
411
410
|
|
412
411
|
# Кинуть ошибку если настройка нам неизвестна
|
413
412
|
unknown_settings = args_hash.keys.collect{|k|k.to_s} - @settings.keys.collect { |k| k.to_s }
|
414
|
-
raise RuTils::Gilenson::UnknownSetting, unknown_settings
|
413
|
+
raise RuTils::Gilenson::UnknownSetting, unknown_settings if unknown_settings.any?
|
415
414
|
|
416
415
|
args_hash.each_pair do | key, value |
|
417
416
|
@settings[key.to_s] = (value ? true : false)
|
@@ -517,15 +516,11 @@ class RuTils::Gilenson::Formatter
|
|
517
516
|
def process_laquo(text)
|
518
517
|
text.gsub!( /\"\"/ui, self.glyph[:quot]*2);
|
519
518
|
text.gsub!( /(^|\s|#{@mark_tag}|>|\()\"((#{@mark_tag})*[~0-9ёЁA-Za-zА-Яа-я\-:\/\.])/ui, '\1'+self.glyph[:laquo]+'\2');
|
520
|
-
# nb: wacko only regexp follows:
|
521
|
-
# text.gsub!( /(^|\s|#{@mark_tag}|>|\()\"((#{#{@mark_tag}|\/#{self.glyph[:nbsp]}|\/|\!)*[~0-9ёЁA-Za-zА-Яа-я\-:\/\.])/ui, '\1'+self.glyph[:laquo]+'\2')
|
522
519
|
_text = '""';
|
523
520
|
until _text == text do
|
524
521
|
_text = text;
|
525
|
-
text.gsub!( /(#{self.glyph[:laquo]}([^\"]*)[ёЁA-Za-zА-Яа-я0-9\.\-:\/\?\!](#{@mark_tag})*)\"/sui,
|
526
|
-
|
527
|
-
#text.gsub!( /(#{self.glyph[:laquo]}([^\"]*)[ёЁA-Za-zА-Яа-я0-9\.\-:\/](#{@mark_tag})*\?(#{#{@mark_tag})*)\"/sui, '\1'+self.glyph[:raquo])
|
528
|
-
# text.gsub!( /(#{self.glyph[:raquo]}([^\"]*)[ёЁA-Za-zА-Яа-я0-9\.\-:\/](#{@mark_tag}|\/|\!)*)\"/sui, '\1'+self.glyph[:raquo])
|
522
|
+
text.gsub!( /(#{self.glyph[:laquo]}([^\"]*)[ёЁA-Za-zА-Яа-я0-9\.\-:\/\?\!](#{@mark_tag})*)\"/sui,
|
523
|
+
'\1'+self.glyph[:raquo])
|
529
524
|
end
|
530
525
|
end
|
531
526
|
|
@@ -563,13 +558,9 @@ class RuTils::Gilenson::Formatter
|
|
563
558
|
|
564
559
|
text.gsub!(/(\s+)([a-zа-яА-Я]{1,2}[\)\]\!\?,\.;]{0,3}\s$)/ui, self.glyph[:nbsp]+'\2')
|
565
560
|
|
566
|
-
|
567
|
-
text.gsub!( /(\s)(#{i})(\s+)/sui, '\1\2' + self.glyph[:nbsp])
|
568
|
-
end
|
561
|
+
@glueleft.each { | i | text.gsub!( /(\s)(#{i})(\s+)/sui, '\1\2' + self.glyph[:nbsp]) }
|
569
562
|
|
570
|
-
|
571
|
-
text.gsub!( /(\s)(#{i})(\s+)/sui, self.glyph[:nbsp]+'\2\3')
|
572
|
-
end
|
563
|
+
@glueright.each { | i | text.gsub!( /(\s)(#{i})(\s+)/sui, self.glyph[:nbsp]+'\2\3') }
|
573
564
|
|
574
565
|
text.strip!
|
575
566
|
end
|
@@ -594,7 +585,6 @@ class RuTils::Gilenson::Formatter
|
|
594
585
|
# Все глифы
|
595
586
|
@glyph.values.each do | entity |
|
596
587
|
next unless entity =~ /^&#(\d+);/
|
597
|
-
|
598
588
|
text.gsub!(/#{entity}/, entity_to_raw_utf8(entity))
|
599
589
|
end
|
600
590
|
end
|
@@ -606,10 +596,11 @@ class RuTils::Gilenson::Formatter
|
|
606
596
|
end
|
607
597
|
end #end Gilenson
|
608
598
|
|
609
|
-
|
599
|
+
# Выбрасывается если форматтеру задается неизвестная настройка
|
600
|
+
class RuTils::Gilenson::UnknownSetting < RuntimeError
|
610
601
|
end
|
611
602
|
|
612
|
-
module RuTils::Gilenson::StringFormatting
|
603
|
+
module RuTils::Gilenson::StringFormatting
|
613
604
|
# Форматирует строку с помощью Gilenson::Formatter. Все дополнительные опции передаются форматтеру.
|
614
605
|
def gilensize(*args)
|
615
606
|
opts = args.last.is_a?(Hash) ? args.last : {}
|
@@ -4,7 +4,9 @@ module RuTils
|
|
4
4
|
# Метод позволяет проверить, включена ли перегрузка функций других модулей.
|
5
5
|
# Попутно он спрашивает модуль Locale (если таковой имеется) является ли русский
|
6
6
|
# текущим языком, и если является, включает перегрузку функций имплицитно.
|
7
|
-
#
|
7
|
+
# Это позволяет подчинить настройку перегруженных функций настроенной локали.
|
8
|
+
# Модуль Locale можно получить как часть Multilingual Rails, как часть Ruby-Gettext или как отдельный
|
9
|
+
# модуль ruby-locale. Мы поддерживаем все три.
|
8
10
|
def self.overrides_enabled?
|
9
11
|
if defined?(Locale) and Locale.respond_to?(:current)
|
10
12
|
return true if Locale.current.to_s.split('_').first == 'ru'
|
@@ -1,6 +1,6 @@
|
|
1
1
|
if defined?(Object::RedCloth) and (!RedCloth.instance_methods.include?(:stock_pgl))
|
2
2
|
# RuTils выполняет перегрузку Textile Glyphs в RedCloth, перенося форматирование спецсимволов на Gilenson.
|
3
|
-
class Object::RedCloth < String #:nodoc:
|
3
|
+
class ::Object::RedCloth < String #:nodoc:
|
4
4
|
|
5
5
|
# Этот метод в RedCloth при наличии Гиленсона надо отключать
|
6
6
|
alias_method :stock_htmlesc, :htmlesc
|
@@ -9,7 +9,7 @@ if defined?(Object::RedCloth) and (!RedCloth.instance_methods.include?(:stock_pg
|
|
9
9
|
end
|
10
10
|
|
11
11
|
# А этот метод обрабатывает Textile Glyphs - ту самую типографицу.
|
12
|
-
# Вместо того чтобы влезать в таблицы мы просто заменим Textile Glyphs - и все будут рады.
|
12
|
+
# Вместо того чтобы влезать в чужие таблицы мы просто заменим Textile Glyphs на Gilenson - и все будут рады.
|
13
13
|
alias_method :stock_pgl, :pgl
|
14
14
|
def pgl(text) #:nodoc:
|
15
15
|
RuTils::overrides_enabled? ? text.replace(RuTils::Gilenson::Formatter.new(text).to_html) : stock_pgl(text)
|
data/lib/rutils.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
$KCODE = 'u'
|
2
|
-
require 'jcode' # вот от этого надо бы избавиться - скопировать jsize из jcode и поместить его в свой namespace
|
3
|
-
|
4
2
|
|
5
3
|
# Главный контейнер модуля
|
6
4
|
module RuTils
|
@@ -8,20 +6,20 @@ module RuTils
|
|
8
6
|
INSTALLATION_DIRECTORY = File.expand_path(File.dirname(__FILE__) + '/../') #:nodoc:
|
9
7
|
MAJOR = 0
|
10
8
|
MINOR = 1
|
11
|
-
TINY =
|
9
|
+
TINY = 6
|
12
10
|
|
13
11
|
# Версия RuTils
|
14
12
|
VERSION = [MAJOR, MINOR ,TINY].join('.') #:nodoc:
|
15
13
|
|
16
|
-
# Стандартный маркер для подстановок
|
17
|
-
SUBSTITUTION_MARKER = "\
|
14
|
+
# Стандартный маркер для подстановок - invalid UTF sequence
|
15
|
+
SUBSTITUTION_MARKER = "\xF0\xF0\xF0\xF0" #:nodoc:
|
18
16
|
|
19
17
|
def self.load_component(name) #:nodoc:
|
20
|
-
require RuTils::INSTALLATION_DIRECTORY
|
18
|
+
require File.join(RuTils::INSTALLATION_DIRECTORY, "lib", name.to_s, name.to_s)
|
21
19
|
end
|
22
20
|
|
23
21
|
def self.reload_component(name) #:nodoc:
|
24
|
-
load RuTils::INSTALLATION_DIRECTORY
|
22
|
+
load File.join(RuTils::INSTALLATION_DIRECTORY, "lib", name.to_s, "#{name}.rb")
|
25
23
|
end
|
26
24
|
end
|
27
25
|
|
data/lib/transliteration/bidi.rb
CHANGED
@@ -18,7 +18,7 @@ module RuTils::Transliteration::BiDi
|
|
18
18
|
# " "=>"__","_"=>"__"
|
19
19
|
# так сразу не получится, будут проблемы с "Ь"=>"_'"
|
20
20
|
}.sort do |one, two|
|
21
|
-
two[1].
|
21
|
+
two[1].split(//).size <=> one[1].split(//).size
|
22
22
|
end
|
23
23
|
|
24
24
|
TABLE_FROM = TABLE_TO.unshift([" ","__"]).clone
|
@@ -2,16 +2,9 @@
|
|
2
2
|
# "вот мы и здесь".translify => "vot my i zdes"
|
3
3
|
# "vot my i zdes".detranslify => "вот мы и здесь"
|
4
4
|
module RuTils::Transliteration::Simple
|
5
|
-
|
6
|
-
"Ґ"=>"G","Ё"=>"YO","Є"=>"E","Ї"=>"YI","І"=>"I",
|
5
|
+
TABLE_LOWER = {
|
7
6
|
"і"=>"i","ґ"=>"g","ё"=>"yo","№"=>"#","є"=>"e",
|
8
|
-
"ї"=>"yi","
|
9
|
-
"Д"=>"D","Е"=>"E","Ж"=>"ZH","З"=>"Z","И"=>"I",
|
10
|
-
"Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
|
11
|
-
"О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
|
12
|
-
"У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
|
13
|
-
"Ш"=>"SH","Щ"=>"SCH","Ъ"=>"'","Ы"=>"YI","Ь"=>"",
|
14
|
-
"Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b",
|
7
|
+
"ї"=>"yi","а"=>"a","б"=>"b",
|
15
8
|
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"zh",
|
16
9
|
"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
|
17
10
|
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
|
@@ -22,22 +15,49 @@ module RuTils::Transliteration::Simple
|
|
22
15
|
two[1].size <=> one[1].size
|
23
16
|
end
|
24
17
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
18
|
+
TABLE_UPPER = {
|
19
|
+
"Ґ"=>"G","Ё"=>"YO","Є"=>"E","Ї"=>"YI","І"=>"I",
|
20
|
+
"А"=>"A","Б"=>"B","В"=>"V","Г"=>"G",
|
21
|
+
"Д"=>"D","Е"=>"E","Ж"=>"ZH","З"=>"Z","И"=>"I",
|
22
|
+
"Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N",
|
23
|
+
"О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T",
|
24
|
+
"У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH",
|
25
|
+
"Ш"=>"SH","Щ"=>"SCH","Ъ"=>"'","Ы"=>"YI","Ь"=>"",
|
26
|
+
"Э"=>"E","Ю"=>"YU","Я"=>"YA",
|
27
|
+
}.sort do | one, two|
|
28
|
+
two[1].size <=> one[1].size
|
32
29
|
end
|
33
30
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
31
|
+
TABLE = TABLE_UPPER + TABLE_LOWER
|
32
|
+
|
33
|
+
# Заменяет кириллицу в строке на латиницу
|
34
|
+
def self.translify(str)
|
35
|
+
chars = str.split(//)
|
36
|
+
|
37
|
+
lowers = TABLE_LOWER.map{|e| e[0] }
|
38
|
+
uppers = TABLE_UPPER.map{|e| e[0] }
|
39
|
+
|
40
|
+
hashtable = {}
|
41
|
+
TABLE.each do | item |
|
42
|
+
hashtable[item[0]] = item[1]
|
43
|
+
end
|
44
|
+
|
45
|
+
result = ''
|
46
|
+
chars.each_with_index do | char, index |
|
47
|
+
if uppers.include?(char) && lowers.include?(chars[index+1])
|
48
|
+
# Combined case. Here we deal with Latin letters so there is no problem to use
|
49
|
+
# Ruby's builtin upcase_downcase
|
50
|
+
ch = hashtable[char].downcase.capitalize
|
51
|
+
result << ch
|
52
|
+
elsif uppers.include?(char)
|
53
|
+
result << hashtable[char]
|
54
|
+
elsif lowers.include?(char)
|
55
|
+
result << hashtable[char]
|
56
|
+
else
|
57
|
+
result << char
|
58
|
+
end
|
39
59
|
end
|
40
|
-
|
60
|
+
return result
|
41
61
|
end
|
42
62
|
|
43
63
|
# Транслитерирует строку, делая ее пригодной для применения как имя директории или URL
|
data/test/t_datetime.rb
CHANGED
@@ -20,7 +20,8 @@ class StrftimeRuTest < Test::Unit::TestCase
|
|
20
20
|
assert_equal "сб, суббота, дек, декабрь", Time.local(2005,"dec",31).strftime("%a, %A, %b, %B")
|
21
21
|
assert_equal "%a, %A, %b, %B", Time.local(2005,"dec",31).strftime("%%a, %%A, %%b, %%B")
|
22
22
|
assert_equal "%сб, %суббота, %дек, %декабрь", Time.local(2005,"dec",31).strftime("%%%a, %%%A, %%%b, %%%B")
|
23
|
-
assert_equal "Сегодня: 31
|
23
|
+
assert_equal "Сегодня: 31 декабря, суббота, 2005 года", Time.local(2005,"dec",31).strftime("Сегодня: %d %B, %A, %Y года")
|
24
|
+
assert_equal "Сегодня: ноябрь, 30 число, дождик в четверг, а год у нас - 2006", Time.local(2006,11,30).strftime("Сегодня: %B, %d число, дождик в %A, а год у нас - %Y")
|
24
25
|
|
25
26
|
date = Date.new(2005, 11, 9)
|
26
27
|
assert_equal "ноя ноябрь ср среда", "#{Date::RU_ABBR_MONTHNAMES[date.mon]} #{Date::RU_MONTHNAMES[date.mon]} #{Date::RU_ABBR_DAYNAMES[date.wday]} #{Date::RU_DAYNAMES[date.wday]}"
|
data/test/t_integration.rb
CHANGED
@@ -2,9 +2,23 @@ $KCODE = 'u'
|
|
2
2
|
require 'test/unit'
|
3
3
|
require 'rubygems'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
begin
|
6
|
+
require 'action_view' unless defined?(ActionView)
|
7
|
+
rescue LoadError
|
8
|
+
$skip_rails = true
|
9
|
+
end
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'RedCloth' unless defined?(RedCloth)
|
13
|
+
rescue LoadError
|
14
|
+
$skip_redcloth = true
|
15
|
+
end
|
16
|
+
|
17
|
+
begin
|
18
|
+
require 'BlueCloth' unless defined?(BlueCloth)
|
19
|
+
rescue LoadError
|
20
|
+
$skip_bluecloth = true
|
21
|
+
end
|
8
22
|
|
9
23
|
require File.dirname(__FILE__) + '/../lib/rutils'
|
10
24
|
load File.dirname(__FILE__) + '/../lib/integration/integration.rb'
|
@@ -26,6 +40,8 @@ end
|
|
26
40
|
# Нужно иметь в виду что Textile осуществляет свою обработку типографики, которую мы подменяем!
|
27
41
|
class TextileIntegrationTest < Test::Unit::TestCase
|
28
42
|
def test_integration_textile
|
43
|
+
raise "You must have RedCloth to test Textile integration" and return if $skip_redcloth
|
44
|
+
|
29
45
|
RuTils::overrides = true
|
30
46
|
assert RuTils.overrides_enabled?
|
31
47
|
assert_equal "<p>И вот «они пошли туда», и шли шли шли</p>",
|
@@ -42,6 +58,8 @@ end
|
|
42
58
|
# Сам Markdown никакой обработки типографики не производит (это делает RubyPants, но вряд ли его кто-то юзает на практике)
|
43
59
|
class MarkdownIntegrationTest < Test::Unit::TestCase
|
44
60
|
def test_integration_markdown
|
61
|
+
raise "You must have BlueCloth to test Markdown integration" and return if $skip_bluecloth
|
62
|
+
|
45
63
|
RuTils::overrides = true
|
46
64
|
assert RuTils.overrides_enabled?
|
47
65
|
assert_equal "<p>И вот «они пошли туда», и шли шли шли</p>",
|
@@ -57,6 +75,8 @@ end
|
|
57
75
|
# Перегрузка helper'ов Rails
|
58
76
|
class RailsHelpersOverrideTest < Test::Unit::TestCase
|
59
77
|
def test_distance_of_time_in_words
|
78
|
+
raise "You must have Rails to test ActionView integration" and return if $skip_rails
|
79
|
+
|
60
80
|
eval 'class Foo
|
61
81
|
include ActionView::Helpers::DateHelper
|
62
82
|
def get_dst
|
data/test/t_transliteration.rb
CHANGED
@@ -11,12 +11,29 @@ class TranslitTest < Test::Unit::TestCase
|
|
11
11
|
|
12
12
|
def test_translify
|
13
13
|
assert_equal "sch", 'щ'.translify
|
14
|
-
assert_equal "
|
14
|
+
assert_equal "stansyi", "стансы".translify
|
15
|
+
assert_equal "upuschenie", 'упущение'.translify
|
15
16
|
assert_equal "sh", 'ш'.translify
|
17
|
+
assert_equal "SH", 'Ш'.translify
|
16
18
|
assert_equal "ts", 'ц'.translify
|
17
19
|
assert_equal "Eto kusok stroki russkih bukv v peremshku s latinizey i ampersandom (pozor!) & something", @string.translify
|
18
20
|
assert_equal "Это просто некий текст".translify, "Eto prosto nekiy tekst"
|
21
|
+
|
22
|
+
assert_equal "NEVEROYATNOE UPUSCHENIE", 'НЕВЕРОЯТНОЕ УПУЩЕНИЕ'.translify
|
23
|
+
assert_equal "Neveroyatnoe Upuschenie", 'Невероятное Упущение'.translify
|
24
|
+
assert_equal "Sherstyanoy Zayats", 'Шерстяной Заяц'.translify
|
25
|
+
assert_equal "N.P. Sherstyakov", 'Н.П. Шерстяков'.translify
|
26
|
+
assert_equal "SHAROVARYI", 'ШАРОВАРЫ'.translify
|
19
27
|
end
|
28
|
+
|
29
|
+
# def test_detranslify
|
30
|
+
# puts "Шерстяной негодяй"
|
31
|
+
# assert_equal "щ", "sch".detranslify
|
32
|
+
# assert_equal "Щ", "SCH".detranslify
|
33
|
+
# assert_equal "Щ", "Sch".detranslify
|
34
|
+
# assert_equal "Щукин", "Schukin".detranslify
|
35
|
+
# assert_equal "Шерстяной негодяй", "Scherstyanoy negodyay".detranslify
|
36
|
+
# end
|
20
37
|
|
21
38
|
def test_dirify
|
22
39
|
assert_equal "eto-kusok-stroki-ruskih-bukv-v-peremshku-s-latinizey-i-ampersandom-pozor-and-something", @string.dirify
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: rutils
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.1.
|
7
|
-
date: 2006-
|
6
|
+
version: 0.1.6
|
7
|
+
date: 2006-08-18 00:00:00 +02:00
|
8
8
|
summary: Simple processing of russian strings
|
9
9
|
require_paths:
|
10
10
|
- lib
|