rutils 1.1.4 → 2.0.0

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