rutils 1.1.4 → 2.0.0

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.
@@ -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