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 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 = options[:use_short_month] ? Date::RU_ABBR_MONTHNAMES : Date::RU_INFLECTED_MONTHNAMES
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[:prefix], options[:include_blank], options[:discard_type], options[:disabled])
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
- select_day(date, options) + select_month(date, options) + select_year(date, options)
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
@@ -6,7 +6,7 @@ module RuTils
6
6
  INSTALLATION_DIRECTORY = File.expand_path(File.dirname(__FILE__) + '/../') #:nodoc:
7
7
  MAJOR = 0
8
8
  MINOR = 1
9
- TINY = 6
9
+ TINY = 7
10
10
 
11
11
  # Версия RuTils
12
12
  VERSION = [MAJOR, MINOR ,TINY].join('.') #:nodoc:
@@ -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
@@ -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 Foo
82
+ eval 'class HelperTester
81
83
  include ActionView::Helpers::DateHelper
82
- def get_dst
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
- foo = Foo.new
89
- assert_equal "20 минут", foo.get_dst
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.6
7
- date: 2006-08-18 00:00:00 +02:00
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