rutils 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +2 -0
- data/lib/integration/rails_date_helper_override.rb +19 -5
- data/lib/rutils.rb +1 -1
- data/lib/transliteration/simple.rb +3 -1
- data/lib/transliteration/transliteration.rb +2 -2
- data/test/t_integration.rb +23 -4
- metadata +2 -2
data/CHANGELOG
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
CVS
|
2
|
+
* Date helpers приведены в более веселый вид (и в соответствие с Rails 1.2.1) (julik)
|
3
|
+
* date_helper надо поменять чтобы передавать рельсовому хелперу весь массив options в хеше (julik)
|
2
4
|
|
3
5
|
Версия 0.1.6 - 18.08.2006
|
4
6
|
* Удалили jcode, он нам не сильно нужен (julik)
|
@@ -17,9 +17,16 @@ if defined?(Object::ActionView)
|
|
17
17
|
# select_month(Date.today, :use_month_numbers => true) # Использует ключи "1", "3"
|
18
18
|
# select_month(Date.today, :add_month_numbers => true) # Использует ключи "1 - Январь", "3 - Март"
|
19
19
|
def select_month(date, options = {})
|
20
|
-
month_options = []
|
20
|
+
month_options = []
|
21
21
|
if RuTils::overrides_enabled?
|
22
|
-
month_names =
|
22
|
+
month_names = case true
|
23
|
+
when options[:use_short_month]
|
24
|
+
Date::RU_ABBR_MONTHNAMES
|
25
|
+
when options[:order] && options[:order].include?(:day) # использование в контексте date_select с днями требует родительный падеж
|
26
|
+
Date::RU_INFLECTED_MONTHNAMES
|
27
|
+
else
|
28
|
+
Date::RU_MONTHNAMES
|
29
|
+
end
|
23
30
|
else
|
24
31
|
month_names = options[:use_short_month] ? Date::ABBR_MONTHNAMES : Date::MONTHNAMES
|
25
32
|
end
|
@@ -37,13 +44,20 @@ if defined?(Object::ActionView)
|
|
37
44
|
%(<option value="#{month_number}">#{month_name}</option>\n)
|
38
45
|
)
|
39
46
|
end
|
40
|
-
|
41
|
-
select_html(options[:field_name] || 'month', month_options, options
|
47
|
+
|
48
|
+
select_html(options[:field_name] || 'month', month_options, options)
|
42
49
|
end
|
43
50
|
|
44
51
|
# Заменяет ActionView::Helpers::DateHelper::select_date меню выбора русской даты.
|
45
52
|
def select_date(date = Date.today, options = {})
|
46
|
-
|
53
|
+
options[:order] ||= []
|
54
|
+
[:day, :month, :year].each { |o| options[:order].push(o) unless options[:order].include?(o) }
|
55
|
+
|
56
|
+
select_date = ''
|
57
|
+
options[:order].each do |o|
|
58
|
+
select_date << self.send("select_#{o}", date, options)
|
59
|
+
end
|
60
|
+
select_date
|
47
61
|
end
|
48
62
|
|
49
63
|
# Заменяет ActionView::Helpers::DateHelper::select_datetime меню выбора русской даты.
|
data/lib/rutils.rb
CHANGED
@@ -30,7 +30,8 @@ module RuTils::Transliteration::Simple
|
|
30
30
|
|
31
31
|
TABLE = TABLE_UPPER + TABLE_LOWER
|
32
32
|
|
33
|
-
# Заменяет кириллицу в строке на
|
33
|
+
# Заменяет кириллицу в строке на латиницу. Немного специфично потому что поддерживает
|
34
|
+
# комби-регистр (Щука -> Shuka)
|
34
35
|
def self.translify(str)
|
35
36
|
chars = str.split(//)
|
36
37
|
|
@@ -39,6 +40,7 @@ module RuTils::Transliteration::Simple
|
|
39
40
|
|
40
41
|
hashtable = {}
|
41
42
|
TABLE.each do | item |
|
43
|
+
next unless item[0] && item[1]
|
42
44
|
hashtable[item[0]] = item[1]
|
43
45
|
end
|
44
46
|
|
@@ -10,12 +10,12 @@ require File.join(File.dirname(__FILE__), 'bidi')
|
|
10
10
|
# Реализует транслитерацию любого объекта, реализующего String или to_s
|
11
11
|
module RuTils::Transliteration::StringFormatting
|
12
12
|
|
13
|
-
|
13
|
+
# Транслитерирует строку в латиницу, и возвращает измененную строку
|
14
14
|
def translify
|
15
15
|
RuTils::Transliteration::Simple::translify(self.to_s)
|
16
16
|
end
|
17
17
|
|
18
|
-
|
18
|
+
# Транслитерирует строку, меняя объект
|
19
19
|
def translify!
|
20
20
|
self.replace(self.translify)
|
21
21
|
end
|
data/test/t_integration.rb
CHANGED
@@ -72,21 +72,40 @@ class MarkdownIntegrationTest < Test::Unit::TestCase
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
+
TEST_DATE = Date.parse("1983-10-15") # coincidentially...
|
76
|
+
|
75
77
|
# Перегрузка helper'ов Rails
|
76
78
|
class RailsHelpersOverrideTest < Test::Unit::TestCase
|
77
79
|
def test_distance_of_time_in_words
|
78
80
|
raise "You must have Rails to test ActionView integration" and return if $skip_rails
|
79
81
|
|
80
|
-
eval 'class
|
82
|
+
eval 'class HelperTester
|
81
83
|
include ActionView::Helpers::DateHelper
|
82
|
-
def
|
84
|
+
def get_distance
|
83
85
|
distance_of_time_in_words(Time.now - 20.minutes, Time.now)
|
84
86
|
end
|
87
|
+
|
88
|
+
def get_select_month
|
89
|
+
select_month(TEST_DATE)
|
90
|
+
end
|
91
|
+
|
92
|
+
def get_date_select
|
93
|
+
select_date(TEST_DATE)
|
94
|
+
end
|
95
|
+
|
96
|
+
def get_date_select_without_day
|
97
|
+
select_date(TEST_DATE, :order => [:month, :year])
|
98
|
+
end
|
99
|
+
|
85
100
|
end'
|
86
101
|
|
87
102
|
RuTils::overrides = true
|
88
|
-
|
89
|
-
assert_equal "20 минут",
|
103
|
+
stub = HelperTester.new
|
104
|
+
assert_equal "20 минут", stub.get_distance
|
105
|
+
assert_match /июль/, stub.get_select_month, "Месяц в выборе месяца должен быть указан в именительном падеже"
|
106
|
+
assert_match /декабря/, stub.get_date_select, "Имя месяца должно быть указано в родительном падеже"
|
107
|
+
assert_match /декабря/, stub.get_date_select_without_day,
|
108
|
+
"Хелпер select_date не позволяет опускать фрагменты, имя месяца должно быть указано в родительном падеже"
|
90
109
|
end
|
91
110
|
end
|
92
111
|
|
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:
|
6
|
+
version: 0.1.7
|
7
|
+
date: 2007-02-05 00:00:00 +01:00
|
8
8
|
summary: Simple processing of russian strings
|
9
9
|
require_paths:
|
10
10
|
- lib
|