rutils 0.1.6 → 0.1.7
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.
- 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
|