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.
@@ -0,0 +1,69 @@
1
+ $KCODE = 'u'
2
+ require 'test/unit'
3
+ require File.dirname(__FILE__) + '/../lib/rutils'
4
+
5
+
6
+ class PropisjuTestCase < Test::Unit::TestCase
7
+ def test_ints
8
+ assert_equal "пятьсот двадцать три", 523.propisju
9
+ assert_equal "шесть тысяч семьсот двадцать семь", 6727.propisju
10
+ assert_equal "восемь миллионов шестьсот пятьдесят два", 8000652.propisju
11
+ assert_equal "восемь миллионов шестьсот пятьдесят две", 8000652.propisju(2)
12
+ assert_equal "восемь миллионов шестьсот пятьдесят два", 8000652.propisju(3)
13
+ assert_equal "сорок пять", 45.propisju
14
+ assert_equal "пять", 5.propisju
15
+ assert_equal "шестьсот двенадцать", 612.propisju
16
+ assert_equal "двадцать пять колес", 25.propisju_items(3, "колесо", "колеса", "колес")
17
+ assert_equal "двадцать одна подстава", 21.propisju_items(2, "подстава", "подставы", "подстав")
18
+ end
19
+
20
+ def test_floats
21
+ assert_equal "шесть целых пять десятых", (6.50).propisju
22
+ assert_equal "триста сорок одна целая девять десятых", (341.9).propisju
23
+ assert_equal "триста сорок одна целая двести сорок пять тысячных", (341.245).propisju
24
+ assert_equal "двести три целых сорок одна сотая", (203.41).propisju
25
+ assert_equal "четыреста сорок две целых пять десятых", (442.50000).propisju
26
+ assert_equal "двести двенадцать целых четыре десятых сволочи", (212.40).propisju_items(2, "сволочь", "сволочи", "сволочей")
27
+ assert_equal "двести двенадцать сволочей", (212.00).propisju_items(2, "сволочь", "сволочи", "сволочей")
28
+ end
29
+
30
+ def test_items
31
+ assert_equal "чемодана", 523.items("чемодан", "чемодана", "чемоданов")
32
+ assert_equal "партий", 6727.items("партия", "партии", "партий")
33
+ assert_equal "козлов", 45.items("козел", "козла", "козлов")
34
+ assert_equal "колес", 260.items("колесо", "колеса", "колес")
35
+ end
36
+
37
+ def test_money
38
+ assert_equal "сто двадцать три рубля", 123.rublej
39
+ assert_equal "триста сорок три рубля двадцать копеек", (343.20).rublej
40
+ assert_equal "сорок две копейки", (0.4187).rublej
41
+ assert_equal "триста тридцать два рубля", (331.995).rublej
42
+ end
43
+ end
44
+
45
+ #class PluralizeTestCase < Test::Unit::TestCase
46
+ #
47
+ # def test_males
48
+ # assert_equal "гада", "гад".ru_pluralize(3)
49
+ # assert_equal "враг", "враг".ru_pluralize(1)
50
+ # assert_equal "сцепа", "сцеп".ru_pluralize(2)
51
+ # assert_equal "огня", "огонь".ru_pluralize(2)
52
+ # assert_equal "огней", "огонь".ru_pluralize(6)
53
+ # end
54
+ #
55
+ # def test_females
56
+ # assert_equal "сволочей", "сволочь".ru_pluralize(6)
57
+ # assert_equal "весны", "весна".ru_pluralize(3)
58
+ # assert_equal "чета", "четы".ru_pluralize(2)
59
+ # assert_equal "чета", "чет".ru_pluralize(5)
60
+ # assert_equal "вони", "вонь".ru_pluralize(3)
61
+ # assert_equal "воней", "вонь".ru_pluralize(6)
62
+ # end
63
+ #
64
+ # def test_middles
65
+ # assert_equal "окна", "окно".ru_pluralize(2)
66
+ # assert_equal "колес", "колесо".ru_pluralize(15)
67
+ # assert_equal "насилий", "насилие".ru_pluralize(5)
68
+ # end
69
+ #end
@@ -0,0 +1,10 @@
1
+ $KCODE = 'u'
2
+ require 'test/unit'
3
+ require File.dirname(__FILE__) + '/../lib/rutils'
4
+
5
+ class RutilsBaseTest < Test::Unit::TestCase
6
+ def test_rutils_location
7
+ libdir = File.expand_path(File.dirname(__FILE__) + '/../')
8
+ assert_equal libdir, RuTils::INSTALLATION_DIRECTORY
9
+ end
10
+ end
@@ -0,0 +1,109 @@
1
+ $KCODE = 'u'
2
+ require 'test/unit'
3
+ require File.dirname(__FILE__) + '/../lib/rutils'
4
+
5
+
6
+ class TranslitTest < Test::Unit::TestCase
7
+
8
+ def setup
9
+ @string = "Это кусок строки русских букв v peremeshku s latinizey i амперсандом (pozor!) & something"
10
+ end
11
+
12
+ def test_translify
13
+ assert_equal "sch", 'щ'.translify
14
+ assert_equal "stansyi", "стансы".translify
15
+ assert_equal "upuschenie", 'упущение'.translify
16
+ assert_equal "sh", 'ш'.translify
17
+ assert_equal "SH", 'Ш'.translify
18
+ assert_equal "ts", 'ц'.translify
19
+ assert_equal "Eto kusok stroki russkih bukv v peremeshku s latinizey i ampersandom (pozor!) & something", @string.translify
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
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
37
+
38
+ def test_dirify
39
+ assert_equal "eto-kusok-stroki-russkih-bukv-v-peremeshku-s-latinizey-i-ampersandom-pozor-and-something", @string.dirify
40
+ assert_equal "esche-russkiy-tekst", "Еще РусСКий теКст".dirify
41
+ # dirify не должен съедать парные буквы
42
+ assert_equal "kooperator-poobedal-offlayn", "кооператор пообедал оффлайн".dirify
43
+ end
44
+ end
45
+
46
+
47
+ class BiDiTranslitTest < Test::Unit::TestCase
48
+
49
+ def setup
50
+ @strings_all_with_slash = {
51
+ "ThisIsРусскийName/ДляВас/ДемонстрацияOfSwitching" => "ThisIs+Russkijj+Name/+DljaVas+/+Demonstracija+OfSwitching",
52
+ "Андрэ Нортон Зачумлённый корабльzip" => "+Andreh__Norton__Zachumljonnyjj__korabl'+zip",
53
+ "Эй Эгегей" => "+EHjj__EHgegejj",
54
+ "эй-эй" => "+ehjj+-+ehjj",
55
+ "WebРазработка/Скрипты" => "Web+Razrabotka+/+Skripty",
56
+ "Смотрите зайцы -- нас много" => "+Smotrite__zajjcy__+--+__nas__mnogo",
57
+ "Привет Родина" => "+Privet__Rodina",
58
+ "ЙухХа" => "+JJukhKHa",
59
+ "Ыхыхых Its English text" => "+Ykhykhykh__+Its+__+English+__+text",
60
+ "Пьянь" => "+P'jan'",
61
+ "----____" => "----____",
62
+ "Madonna - Свежия Песенки" => "Madonna+__+-+__Svezhija__Pesenki",
63
+ "58-49" => "58-49",
64
+ "Въезд ГЛЯНЬ ВЪЕЗД" => "+V~ezd__GLJAN_'__V_~EZD",
65
+ "----____" => "----____",
66
+ "Въезд ГЛЯНь ВЪЕЗД" => "+V~ezd__GLJAN'__V_~EZD",
67
+ "Установка mod_perl" => "+Ustanovka__+mod_perl",
68
+ "Проверка__двери неразумной" => "+Proverka+__+dveri__nerazumnojj",
69
+ "Проверка_ дверцы" => "+Proverka+_+__dvercy",
70
+ "Кровать устала _ь" => "+Krovat'__ustala__+_+'",
71
+ "test__bed" => "test__bed",
72
+ "test_ bed" => "test_+__+bed",
73
+ "test__ __bed" => "test__+__+__bed",
74
+ "a_-_b-_-c" => "a_-_b-_-c",
75
+ "a - b _ c" => "a+__+-+__+b+__+_+__+c",
76
+ }
77
+
78
+ @strings_tran_without_slash = {
79
+ "Андрэ/ Н/о/ртон /Зачум//лённый корабль/z/ip" => "+Andreh__Norton__Zachumljonnyjj__korabl'+zip",
80
+ "WebРазработка/Мимо" => "Web+RazrabotkaMimo",
81
+ "test_/_bed" => "test__bed",
82
+ }
83
+
84
+ @strings_detran_without_slash = {
85
+ "Webds" => "/We/bds/",
86
+ "WebРазработкаМимо" => "Web/+Razrabotka+/+Mimo",
87
+ "WebСкрипты" => "Web/+Skripty",
88
+ "ПХПScripts" => "+PKHP+/Scripts",
89
+ }
90
+ end
91
+
92
+ def test_bidi_translify
93
+ @strings_all_with_slash.each do |strFrom, strTo|
94
+ assert_equal strTo, strFrom.bidi_translify
95
+ end
96
+ @strings_tran_without_slash.each do |strFrom, strTo|
97
+ assert_equal strTo, strFrom.bidi_translify(false)
98
+ end
99
+ end
100
+
101
+ def test_bidi_detranslify
102
+ @strings_all_with_slash.each do |strTo, strFrom|
103
+ assert_equal strTo, strFrom.bidi_detranslify
104
+ end
105
+ @strings_detran_without_slash.each do |strTo, strFrom|
106
+ assert_equal strTo, strFrom.bidi_detranslify(false)
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,57 @@
1
+ $KCODE = 'u'
2
+ require 'test/unit'
3
+ require File.dirname(__FILE__) + '/../lib/rutils'
4
+
5
+ # Тесты Гиленсона - обычный набор тестов к Тыпографице с сайта pixel-apes. Все "наши" тесты Гиленсона идут в другой test case!
6
+ class TypograficaComplianceTest < Test::Unit::TestCase
7
+
8
+ def test_phones
9
+ assert_equal '<nobr>3&ndash;12&ndash;30</nobr>', '3-12-30'.o_gilensize
10
+ assert_equal '<nobr>12&ndash;34&ndash;56</nobr>', '12-34-56'.o_gilensize
11
+ assert_equal '<nobr>88&ndash;25&ndash;04</nobr>', '88-25-04'.o_gilensize
12
+ assert_equal '+7 <nobr>(99284)&nbsp;65&ndash;818</nobr>', '+7 (99284) 65-818'.o_gilensize
13
+ assert_equal '<nobr>725&ndash;01&ndash;10</nobr>', '725-01-10'.o_gilensize
14
+ end
15
+
16
+ def test_address
17
+ assert_equal 'табл.&nbsp;2, рис.&nbsp;2.10', 'табл. 2, рис. 2.10'.o_gilensize
18
+ assert_equal 'офис&nbsp;415, оф.340, д.5, ул.&nbsp;Народной Воли, пл. Малышева', 'офис 415, оф.340, д.5, ул. Народной Воли, пл. Малышева'.o_gilensize
19
+ end
20
+
21
+ def test_specials
22
+ assert_equal '&copy; 2002, &copy; 2003, &copy; 2004, &copy; 2005 &mdash; тоже без&nbsp;пробелов: &copy;2002, &copy;Кукуц. однако: варианты (а) и&nbsp;(с)', '(с) 2002, (С) 2003, (c) 2004, (C) 2005 -- тоже без пробелов: (с)2002, (c)Кукуц. однако: варианты (а) и (с)'.o_gilensize
23
+ assert_equal '+5&#176;С, +7&#176;C, &ndash;5&#176;F', '+5^С, +17^C, -275^F'.o_gilensize
24
+ assert_equal 'об&nbsp;этом подробнее &mdash; читай &#167;25', 'об этом подробнее -- читай (p)25'.o_gilensize
25
+ assert_equal 'один же&nbsp;минус &ndash; краткое тире', 'один же минус - краткое тире'.o_gilensize
26
+ assert_equal 'Sharpdesign&#153;, Microsoft<sup>&#174;</sup>', 'Sharpdesign(tm), Microsoft(r)'.o_gilensize
27
+ end
28
+
29
+ def test_breaking
30
+ assert_equal 'скажи, мне, ведь не&nbsp;даром! Москва, клеймённая пожаром. Французу отдана', 'скажи ,мне, ведь не даром !Москва, клеймённая пожаром .Французу отдана'.o_gilensize
31
+ assert_equal 'so&nbsp;be it, my&nbsp;liege. Tiny dwellers roam thru midnight! Hell raised, the&nbsp;Balrog is&nbsp;hiding in&nbsp;your backyard!', 'so be it ,my liege .Tiny dwellers roam thru midnight !Hell raised, the Balrog is hiding in your backyard!'.o_gilensize
32
+ assert_equal 'при&nbsp;установке командой строки в&nbsp;?page=help <nobr>бла-бла-бла-бла</nobr>', 'при установке командой строки в ?page=help бла-бла-бла-бла'.o_gilensize
33
+ assert_equal 'как&nbsp;интересно будет переноситься со&nbsp;строки на&nbsp;строку <nobr>что-то</nobr> разделённое дефисом, ведь дефис тот&nbsp;тоже ведь из&nbsp;наших. <nobr>Какие-то</nobr> браузеры думают, что&nbsp;следует переносить и&nbsp;его...', 'как интересно будет переноситься со строки на строку что-то разделённое дефисом, ведь дефис тот тоже ведь из наших. Какие-то браузеры думают, что следует переносить и его...'.o_gilensize
34
+ end
35
+
36
+ def test_quotes
37
+ assert_equal 'english &#147;quotes&#148; should be&nbsp;quite like this', 'english "quotes" should be quite like this'.o_gilensize
38
+ assert_equal 'русские же&nbsp;&laquo;оформляются&raquo; подобным образом', 'русские же "оформляются" подобным образом'.o_gilensize
39
+ assert_equal 'кавычки &laquo;расставлены&raquo; &#147;in a&nbsp;chaotic order&#148;', 'кавычки "расставлены" "in a chaotic order"'.o_gilensize
40
+ assert_equal 'диагональ моего монитора &mdash; 17&quot;, а&nbsp;размер пениса &mdash; 1,5&quot;', 'диагональ моего монитора -- 17", а размер пениса -- 1,5"'.o_gilensize
41
+ assert_equal 'в&nbsp;толщину, &laquo;вложенные &#147;quotes&#148; вот&nbsp;так&raquo;, &#147;or it&nbsp;&laquo;будет вложено&raquo; elsewhere&#148;', 'в толщину, "вложенные "quotes" вот так", "or it "будет вложено" elsewhere"'.o_gilensize
42
+ assert_equal '&#147;complicated &laquo;кавычки&raquo;, &laquo;странные &#147;includements&#148; кавычек&raquo;', '"complicated "кавычки", "странные "includements" кавычек"'.o_gilensize
43
+ assert_equal '&#147;double &#147;quotes&#148;', '"double "quotes"'.o_gilensize
44
+ assert_equal '&laquo;дважды вложенные &laquo;кавычки&raquo;', '"дважды вложенные "кавычки"'.o_gilensize
45
+ assert_equal '&laquo;01/02/03&raquo;, дискеты в&nbsp;5.25&quot;', '"01/02/03", дискеты в 5.25"'.o_gilensize
46
+ assert_equal 'после троеточия правая кавычка &mdash; &laquo;Вот...&raquo;', 'после троеточия правая кавычка -- "Вот..."'.o_gilensize
47
+ assert_equal 'setlocale(LC_ALL, &#147;ru_RU.UTF8&#148;);', 'setlocale(LC_ALL, "ru_RU.UTF8");'.o_gilensize
48
+ assert_equal '&#147;read, write, delete&#148; с&nbsp;флагом &#147;only_mine&#148;', '"read, write, delete" с флагом "only_mine"'.o_gilensize
49
+ assert_equal '&laquo;Двоеточие:&raquo;, &laquo;такую умную тему должен писать чувак умеющий скрипты скриптить.&raquo;', '"Двоеточие:", "такую умную тему должен писать чувак умеющий скрипты скриптить."'.o_gilensize
50
+ assert_equal '(&laquo;Вики != HTML&raquo; &mdash; &laquo;Вики != HTML&raquo; &mdash; (&laquo;всякая чушь&raquo;))', '("Вики != HTML" -- "Вики != HTML" -- ("всякая чушь"))'.o_gilensize
51
+ assert_equal '&laquo;фигня123&raquo;, &#147;fignya123&#148;', '"фигня123", "fignya123"'.o_gilensize
52
+ # assert_equal '&laquo;сбалансированные &laquo;кавычки<!--notypo--><!--/notypo--> (четыре в&nbsp;конце) &mdash; связано с&nbsp;синтаксисом ваки', '"сбалансированные "кавычки"""" (четыре в конце) -- связано с синтаксисом ваки'.o_gilensize
53
+ assert_equal '&laquo;несбалансированные &laquo;кавычки&quot;&quot;" (три в&nbsp;конце) &mdash; связано с&nbsp;синтаксисом ваки', '"несбалансированные "кавычки""" (три в конце) -- связано с синтаксисом ваки'.o_gilensize
54
+ assert_equal '&laquo;разноязыкие quotes&raquo;', '"разноязыкие quotes"'.o_gilensize
55
+ assert_equal '&laquo;multilanguage кавычки&raquo;', '"multilanguage кавычки"'.o_gilensize
56
+ end
57
+ end
metadata ADDED
@@ -0,0 +1,92 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rotuka-rutils
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.4
5
+ platform: ruby
6
+ authors:
7
+ - Julian "Julik" Tarkhanov
8
+ autorequire: rutils
9
+ bindir: bin
10
+ cert_chain:
11
+ date: 2007-09-27 00:00:00 -07:00
12
+ default_executable:
13
+ dependencies: []
14
+
15
+ description: Allows simple processing of russian strings - transliteration, numerals as text and HTML beautification
16
+ email: me@julik.nl
17
+ executables:
18
+ - gilensize
19
+ - rutilize
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README
24
+ - TODO
25
+ - CHANGELOG
26
+ files:
27
+ - bin/gilensize
28
+ - bin/rutilize
29
+ - test/run_tests.rb
30
+ - test/t_datetime.rb
31
+ - test/t_gilenson.rb
32
+ - test/t_integration.rb
33
+ - test/t_pluralize.rb
34
+ - test/t_rutils_base.rb
35
+ - test/t_transliteration.rb
36
+ - test/t_typografica.rb
37
+ - lib/countries
38
+ - lib/countries/countries.rb
39
+ - lib/datetime
40
+ - lib/datetime/datetime.rb
41
+ - lib/gilenson
42
+ - lib/gilenson/gilenson.rb
43
+ - lib/gilenson/gilenson_port.rb
44
+ - lib/integration
45
+ - lib/integration/blue_cloth_override.rb
46
+ - lib/integration/integration.rb
47
+ - lib/integration/rails_date_helper_override.rb
48
+ - lib/integration/red_cloth_override.rb
49
+ - lib/pluralizer
50
+ - lib/pluralizer/pluralizer.rb
51
+ - lib/rutils.rb
52
+ - lib/transliteration
53
+ - lib/transliteration/bidi.rb
54
+ - lib/transliteration/simple.rb
55
+ - lib/transliteration/transliteration.rb
56
+ - CHANGELOG
57
+ - init.rb
58
+ - Rakefile.rb
59
+ - README
60
+ - TODO
61
+ has_rdoc: true
62
+ homepage: http://rubyforge.org/projects/rutils
63
+ post_install_message:
64
+ rdoc_options:
65
+ - --main=README
66
+ - --line-numbers
67
+ - --webcvs=http://github.com/rotuka/rutils
68
+ - --charset=utf-8
69
+ - --promiscuous
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">"
75
+ - !ruby/object:Gem::Version
76
+ version: 0.0.0
77
+ version:
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: "0"
83
+ version:
84
+ requirements: []
85
+
86
+ rubyforge_project: rutils
87
+ rubygems_version: 1.2.0
88
+ signing_key:
89
+ specification_version: 1
90
+ summary: Simple processing of russian strings
91
+ test_files:
92
+ - test/run_tests.rb