Class: Spider::I18n::Rails
Instance Method Summary
collapse
-
#find_locale(locale) ⇒ Object
-
#initialize(locale) ⇒ Rails
constructor
-
#load_locale(locale) ⇒ Object
-
#load_locale_file(filename) ⇒ Object
-
#localize_date_time(locale, object, format = :default, options = {}) ⇒ Object
-
#localize_number(number, precision = nil, options = {}) ⇒ Object
-
#parse_date_time(locale, string, format = :default, options = {}) ⇒ Object
FIXME: add extended format handling like in localize.
-
#parse_number(string, options = {}) ⇒ Object
-
#time_ago_in_words(from_time, include_seconds = false) ⇒ Object
Methods inherited from Provider
#day_names, #default_calendar, #localize, #month_names, #week_start, #weekend_end, #weekend_start
Constructor Details
#initialize(locale) ⇒ Rails
Returns a new instance of Rails.
7
8
9
|
# File 'lib/spiderfw/i18n/rails.rb', line 7
def initialize(locale)
@locale = load_locale(locale)
end
|
Instance Method Details
#find_locale(locale) ⇒ Object
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/spiderfw/i18n/rails.rb', line 32
def find_locale(locale)
try = locale.to_s
while (try)
extensions = ['yml', 'rb']
extensions.each do |ext|
full_path = Spider.conf.get('i18n.rails_path')+'/'+try+'.'+ext
return [full_path, try] if (File.exist?(full_path))
end
if (try =~ (/^([^\.-_@]+)[\.-_@]/))
try = $1
else
try = false
end
end
end
|
#load_locale(locale) ⇒ Object
12
13
14
15
16
17
18
19
20
|
# File 'lib/spiderfw/i18n/rails.rb', line 12
def load_locale(locale)
orig_locale = locale
file, locale = find_locale(locale)
l = load_locale_file(file) if file
@locale_data = l[locale] if l
raise ArgumentError unless @l
@locale_data.extend(Spider::HashDottedAccess)
return locale
end
|
#load_locale_file(filename) ⇒ Object
22
23
24
25
26
27
28
29
|
# File 'lib/spiderfw/i18n/rails.rb', line 22
def load_locale_file(filename)
type = File.extname(filename).tr('.', '').downcase
if (type == 'rb')
return eval(IO.read(filename), binding, filename)
elsif (type == 'yml')
return YAML::load(IO.read(filename))
end
end
|
#localize_date_time(locale, object, format = :default, options = {}) ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/spiderfw/i18n/rails.rb', line 48
def localize_date_time(locale, object, format = :default, options={})
l = @locale_data
type = object.respond_to?(:sec) ? 'time' : 'date'
formats = l["#{type}.formats"]
format = formats[format.to_s] if formats && formats[format.to_s]
raise "Format #{format} not found" unless format
format = format.to_s.dup
format.gsub!(/%a/, l['date.abbr_day_names'][object.wday])
format.gsub!(/%A/, l["date.day_names"][object.wday])
format.gsub!(/%b/, l["date.abbr_month_names"][object.mon])
format.gsub!(/%B/, l["date.month_names"][object.mon])
format.gsub!(/%p/, l["time.#{object.hour < 12 ? :am : :pm}"]) if object.respond_to? :hour
object.strftime(format)
end
|
#localize_number(number, precision = nil, options = {}) ⇒ Object
82
83
84
85
86
87
88
89
90
91
92
|
# File 'lib/spiderfw/i18n/rails.rb', line 82
def localize_number(number, precision=nil, options={})
l = @locale_data
defaults = l["number.format"]
precision_defaults = l["number.precision.format"]
defaults = defaults.merge(precision_defaults)
separator = (options[:separator] || defaults[:separator])
delimiter = (options[:delimiter] || defaults[:delimiter])
Spider::I18n.do_localize_number(number, delimiter, separator, precision, options)
end
|
#parse_date_time(locale, string, format = :default, options = {}) ⇒ Object
FIXME: add extended format handling like in localize
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/spiderfw/i18n/rails.rb', line 66
def parse_date_time(locale, string, format = :default, options={})
l = @locale_data
type = object.respond_to?(:sec) ? 'time' : 'date'
formats = l["#{type}.formats"]
format = formats[format.to_s] if formats && formats[format.to_s]
raise "Format #{format} not found" unless format
format = format.to_s.dup
if (options[:return] == :datetime)
klass = DateTime
elsif (options[:return] == :date)
klass = Date
end
object.strptime(format)
end
|
#parse_number(string, options = {}) ⇒ Object
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/spiderfw/i18n/rails.rb', line 94
def parse_number(string, options={})
l = @locale_data
defaults = l["number.format"]
precision_defaults = l["number.precision.format"]
defaults = defaults.merge(precision_defaults)
separator = (options[:separator] || defaults[:separator])
delimiter = (options[:delimiter] || defaults[:delimiter])
Spider::I18n.do_parse_number(string, delimiter, separator, options)
end
|
#time_ago_in_words(from_time, include_seconds = false) ⇒ Object
107
108
109
|
# File 'lib/spiderfw/i18n/rails.rb', line 107
def time_ago_in_words(from_time, include_seconds = false)
distance_of_time_in_words(from_time, Time.now, include_seconds)
end
|