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