rutils 1.1.4 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemtest +0 -0
- data/History.txt +10 -0
- data/Manifest.txt +4 -8
- data/README.txt +20 -172
- data/Rakefile.rb +5 -11
- data/init.rb +3 -3
- data/lib/{gilenson/gilenson_stub.rb → gilenson_stub.rb} +0 -6
- data/lib/integration/integration.rb +1 -1
- data/lib/integration/rails_date_helper_override.rb +4 -4
- data/lib/pluralizer.rb +101 -0
- data/lib/rudates.rb +85 -0
- data/lib/rutils.rb +13 -7
- data/lib/transliteration.rb +30 -0
- data/lib/version.rb +1 -1
- data/test/extras/integration_rails_filter.rb +1 -1
- data/test/extras/integration_rails_gilenson_helpers.rb +1 -1
- data/test/extras/integration_rails_helpers.rb +1 -1
- data/test/run_tests.rb +1 -1
- data/test/test_datetime.rb +16 -7
- data/test/test_integration.rb +1 -1
- data/test/test_integration_flag.rb +1 -1
- data/test/test_pluralize.rb +1 -1
- data/test/test_rutils_base.rb +1 -1
- data/test/test_transliteration.rb +1 -32
- metadata +45 -32
- data/bin/rutilize +0 -38
- data/lib/countries/countries.rb +0 -1773
- data/lib/datetime/datetime.rb +0 -83
- data/lib/pluralizer/pluralizer.rb +0 -288
- data/lib/transliteration/bidi.rb +0 -21
- data/lib/transliteration/simple.rb +0 -75
- data/lib/transliteration/transliteration.rb +0 -79
@@ -1,79 +0,0 @@
|
|
1
|
-
# -*- encoding: utf-8 -*-
|
2
|
-
module RuTils
|
3
|
-
module Transliteration #:nodoc:
|
4
|
-
end
|
5
|
-
end
|
6
|
-
|
7
|
-
require File.join(File.dirname(__FILE__), 'simple')
|
8
|
-
|
9
|
-
# Заглушка
|
10
|
-
require File.join(File.dirname(__FILE__), 'bidi')
|
11
|
-
|
12
|
-
=begin
|
13
|
-
Реализует транслитерацию любого объекта, реализующего String или to_s.
|
14
|
-
=== Почему удален BiDi-транслит?
|
15
|
-
|
16
|
-
В отличие от DHH авторы RuTils придерживаются стратегии синтактической серной кислоты вместо синтактического уксуса. Основная область
|
17
|
-
применения bidi-транслитераций - генерация "как-бы" более удобочитаемых URL. К сожалению, у нее есть ряд свойств которые делают ее
|
18
|
-
бессмысленной (кроме как в качестве упражнения по строковым итераторам Ruby). Приводим список аргументов почему вам не нужны
|
19
|
-
автоматические транслитерированные URL:
|
20
|
-
|
21
|
-
* Они будут работать только для набора символов "ASCII + русский". Любая попытка засунуть в ваш URL слово stød закончится печально.
|
22
|
-
* Они будут работать только для русского языка, кириллиц много. Транслитерация по определению языкозависима.
|
23
|
-
* Вашим пользователям придется непрерывно угадывать, пишется буква "я". "Ja"? "Ya"? "J"? Если вы хоть раз наблюдали иностранца, пытающегося
|
24
|
-
выговорить "ОВИРскую" транслитерацию вашей фамилии из загранпаспорта, вы знаете о чем мы говорим.
|
25
|
-
* Приличные браузеры не кодируют русский текст в адресной строке если Ваш вебсервер его принял. Если браузер неприличный то он позволяет этот текст ввести.
|
26
|
-
Если браузер совсем неприличный, то средство ввода у него - стилус размером с зубочистку, а пользуются им в трамвае. Вводить ваш транслит
|
27
|
-
в таких условиях все равно никто не будет, успокойтесь.
|
28
|
-
|
29
|
-
Приводить список аргументов "почему такой транслит вам нужен" мы не будем дабы никого не травмировать.
|
30
|
-
|
31
|
-
Если вам таки страшно неймется реализовать транслит в URL, рекомендуем следующий подход:
|
32
|
-
|
33
|
-
* Для адресуемого обьекта сохраняется поле ++slug++
|
34
|
-
* При сохранении в это поле автоматически пишется "дирифицированное" название, но пользователь может его вручную отредактировать
|
35
|
-
* Дальнейшая адресация производится без "транслитерации обратно", по полю slug напрямую
|
36
|
-
|
37
|
-
Дополнительно рекомендуется запретить загрузку файлов с русскими именами (с помощью Javascript и свойства value элемента input).
|
38
|
-
=end
|
39
|
-
module RuTils::Transliteration::StringFormatting
|
40
|
-
|
41
|
-
# Транслитерирует строку в латиницу, и возвращает измененную строку
|
42
|
-
def translify
|
43
|
-
RuTils::Transliteration::Simple::translify(self.to_s)
|
44
|
-
end
|
45
|
-
|
46
|
-
# Транслитерирует строку, меняя объект
|
47
|
-
def translify!
|
48
|
-
self.replace(self.translify)
|
49
|
-
end
|
50
|
-
|
51
|
-
# Транслитерирует строку, делая ее пригодной для применения как имя директории или URL
|
52
|
-
def dirify
|
53
|
-
RuTils::Transliteration::Simple::dirify(self.to_s)
|
54
|
-
end
|
55
|
-
|
56
|
-
# ++DEPRECATED++ Вызывает ошибку
|
57
|
-
def bidi_translify(allow_slashes = true)
|
58
|
-
RuTils::Transliteration::BiDi.bail!
|
59
|
-
end
|
60
|
-
|
61
|
-
# ++DEPRECATED++ Вызывает ошибку
|
62
|
-
def bidi_translify!(allow_slashes = true)
|
63
|
-
RuTils::Transliteration::BiDi.bail!
|
64
|
-
end
|
65
|
-
|
66
|
-
# ++DEPRECATED++ Вызывает ошибку
|
67
|
-
def bidi_detranslify!(allow_slashes = true)
|
68
|
-
RuTils::Transliteration::BiDi.bail!
|
69
|
-
end
|
70
|
-
|
71
|
-
# ++DEPRECATED++ Вызывает ошибку
|
72
|
-
def bidi_detranslify(allow_slashes = true)
|
73
|
-
RuTils::Transliteration::BiDi.bail!
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
class Object::String
|
78
|
-
include RuTils::Transliteration::StringFormatting
|
79
|
-
end
|