twitter_cldr 1.7.0 → 1.8.0
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/History.txt +6 -0
- data/README.md +61 -5
- data/Rakefile +64 -60
- data/js/lib/twitter_cldr_js.rb +0 -2
- data/lib/twitter_cldr/core_ext.rb +12 -12
- data/lib/twitter_cldr/formatters/calendars/timespan_formatter.rb +13 -11
- data/lib/twitter_cldr/localized/localized_array.rb +33 -0
- data/lib/twitter_cldr/localized/localized_date.rb +23 -0
- data/lib/twitter_cldr/localized/localized_datetime.rb +63 -0
- data/lib/twitter_cldr/localized/localized_number.rb +50 -0
- data/lib/twitter_cldr/localized/localized_object.rb +38 -0
- data/lib/twitter_cldr/localized/localized_string.rb +41 -0
- data/lib/twitter_cldr/localized/localized_symbol.rb +20 -0
- data/lib/twitter_cldr/localized/localized_time.rb +23 -0
- data/lib/twitter_cldr/localized/localized_timespan.rb +26 -0
- data/lib/twitter_cldr/localized.rb +18 -0
- data/lib/twitter_cldr/normalization.rb +23 -0
- data/lib/twitter_cldr/resources/{tries_dumper.rb → collation_tries_dumper.rb} +1 -1
- data/lib/twitter_cldr/resources/composition_exclusions_importer.rb +1 -1
- data/lib/twitter_cldr/resources/language_codes_importer.rb +232 -0
- data/lib/twitter_cldr/resources/locales_resources_importer.rb +1 -1
- data/lib/twitter_cldr/resources/phone_codes_importer.rb +1 -1
- data/lib/twitter_cldr/resources/postal_codes_importer.rb +1 -1
- data/lib/twitter_cldr/resources/tailoring_importer.rb +12 -3
- data/lib/twitter_cldr/resources/unicode_data_importer.rb +3 -1
- data/lib/twitter_cldr/resources.rb +2 -1
- data/lib/twitter_cldr/shared/calendar.rb +2 -6
- data/lib/twitter_cldr/shared/language_codes.rb +75 -0
- data/lib/twitter_cldr/shared/languages.rb +4 -11
- data/lib/twitter_cldr/shared.rb +8 -7
- data/lib/twitter_cldr/tokenizers/base.rb +2 -8
- data/lib/twitter_cldr/utils.rb +8 -0
- data/lib/twitter_cldr/version.rb +1 -1
- data/lib/twitter_cldr.rb +5 -4
- data/resources/custom/locales/cs/units.yml +3 -3
- data/resources/custom/locales/pl/units.yml +4 -4
- data/resources/custom/locales/pt/units.yml +2 -2
- data/resources/shared/language_codes_table.dump +0 -0
- data/spec/core_ext_spec.rb +19 -0
- data/spec/{core_ext/array_spec.rb → localized/localized_array_spec.rb} +1 -1
- data/spec/{core_ext/calendars/date_spec.rb → localized/localized_date_spec.rb} +24 -44
- data/spec/localized/localized_datetime_spec.rb +81 -0
- data/spec/{core_ext/numbers → localized}/localized_number_spec.rb +34 -1
- data/spec/localized/localized_object_spec.rb +89 -0
- data/spec/{core_ext/string_spec.rb → localized/localized_string_spec.rb} +16 -33
- data/spec/{core_ext/symbol_spec.rb → localized/localized_symbol_spec.rb} +3 -1
- data/spec/localized/localized_time_spec.rb +70 -0
- data/spec/normalization_spec.rb +42 -0
- data/spec/readme_spec.rb +51 -5
- data/spec/shared/language_codes_spec.rb +161 -0
- data/spec/shared/phone_codes_spec.rb +2 -2
- data/spec/shared/postal_codes_spec.rb +2 -2
- data/spec/spec_helper.rb +2 -0
- data/spec/tokenizers/base_spec.rb +15 -6
- data/spec/utils_spec.rb +18 -2
- data/twitter_cldr.gemspec +2 -1
- metadata +28 -44
- data/lib/twitter_cldr/core_ext/array.rb +0 -35
- data/lib/twitter_cldr/core_ext/calendars/date.rb +0 -25
- data/lib/twitter_cldr/core_ext/calendars/datetime.rb +0 -65
- data/lib/twitter_cldr/core_ext/calendars/time.rb +0 -25
- data/lib/twitter_cldr/core_ext/calendars/timespan.rb +0 -24
- data/lib/twitter_cldr/core_ext/localized_object.rb +0 -25
- data/lib/twitter_cldr/core_ext/numbers/bignum.rb +0 -8
- data/lib/twitter_cldr/core_ext/numbers/fixnum.rb +0 -8
- data/lib/twitter_cldr/core_ext/numbers/float.rb +0 -8
- data/lib/twitter_cldr/core_ext/numbers/localized_number.rb +0 -54
- data/lib/twitter_cldr/core_ext/string.rb +0 -51
- data/lib/twitter_cldr/core_ext/symbol.rb +0 -22
- data/spec/core_ext/calendars/datetime_spec.rb +0 -90
- data/spec/core_ext/calendars/time_spec.rb +0 -90
- data/spec/core_ext/calendars_spec.rb +0 -34
- data/spec/core_ext/numbers/bignum_spec.rb +0 -25
- data/spec/core_ext/numbers/fixnum_spec.rb +0 -25
- data/spec/core_ext/numbers/float_spec.rb +0 -25
- data/spec/core_ext/numbers_spec.rb +0 -39
@@ -1,35 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Copyright 2012 Twitter, Inc
|
4
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
-
|
6
|
-
class Array
|
7
|
-
def localize(locale = TwitterCldr.get_locale)
|
8
|
-
TwitterCldr::LocalizedArray.new(self, locale)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
module TwitterCldr
|
13
|
-
class LocalizedArray < LocalizedObject
|
14
|
-
def code_points_to_string
|
15
|
-
TwitterCldr::Utils::CodePoints.to_string(base_obj)
|
16
|
-
end
|
17
|
-
|
18
|
-
def sort
|
19
|
-
TwitterCldr::Collation::Collator.new(locale).sort(base_obj).localize
|
20
|
-
end
|
21
|
-
|
22
|
-
def sort!
|
23
|
-
TwitterCldr::Collation::Collator.new(locale).sort!(base_obj)
|
24
|
-
self
|
25
|
-
end
|
26
|
-
|
27
|
-
def formatter_const
|
28
|
-
nil
|
29
|
-
end
|
30
|
-
|
31
|
-
def to_a
|
32
|
-
@base_obj.dup
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Copyright 2012 Twitter, Inc
|
4
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
-
|
6
|
-
class Date
|
7
|
-
def localize(locale = TwitterCldr.get_locale, options = {})
|
8
|
-
TwitterCldr::LocalizedDate.new(self, locale, options)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
module TwitterCldr
|
13
|
-
class LocalizedDate < LocalizedDateTime
|
14
|
-
def to_datetime(time)
|
15
|
-
time_obj = time.is_a?(LocalizedTime) ? time.base_obj : time
|
16
|
-
LocalizedDateTime.new(DateTime.parse("#{@base_obj.strftime("%Y-%m-%d")}T#{time_obj.strftime("%H:%M:%S%z")}"), @locale, :calendar_type => @calendar_type)
|
17
|
-
end
|
18
|
-
|
19
|
-
protected
|
20
|
-
|
21
|
-
def formatter_const
|
22
|
-
TwitterCldr::Formatters::DateFormatter
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Copyright 2012 Twitter, Inc
|
4
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
-
|
6
|
-
class DateTime
|
7
|
-
def localize(locale = TwitterCldr.get_locale, options = {})
|
8
|
-
TwitterCldr::LocalizedDateTime.new(self, locale, options)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
module TwitterCldr
|
13
|
-
class LocalizedDateTime < LocalizedObject
|
14
|
-
attr_reader :calendar_type
|
15
|
-
|
16
|
-
def initialize(obj, locale, options = {})
|
17
|
-
super
|
18
|
-
@calendar_type = options[:calendar_type] || TwitterCldr::DEFAULT_CALENDAR_TYPE
|
19
|
-
end
|
20
|
-
|
21
|
-
TwitterCldr::Tokenizers::DateTimeTokenizer::VALID_TYPES.each do |format_type|
|
22
|
-
define_method "to_#{format_type}_s" do
|
23
|
-
@formatter.format(@base_obj, :type => format_type.to_sym)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def to_timespan(options = {})
|
28
|
-
base_time = options[:base_time] || Time.now
|
29
|
-
seconds = (self.to_time.base_obj.to_i - base_time.to_i).abs
|
30
|
-
TwitterCldr::LocalizedTimespan.new(seconds, options.merge(:locale => @locale, :direction => :none))
|
31
|
-
end
|
32
|
-
|
33
|
-
def ago(options = {})
|
34
|
-
base_time = options[:base_time] || Time.now
|
35
|
-
seconds = self.to_time.base_obj.to_i - base_time.to_i
|
36
|
-
raise ArgumentError.new('Start date is after end date. Consider using "until" function.') if seconds > 0
|
37
|
-
TwitterCldr::LocalizedTimespan.new(seconds, options.merge(:locale => @locale))
|
38
|
-
end
|
39
|
-
|
40
|
-
def until(options = {})
|
41
|
-
base_time = options[:base_time] || Time.now
|
42
|
-
seconds = self.to_time.base_obj.to_i - base_time.to_i
|
43
|
-
raise ArgumentError.new('End date is before start date. Consider using "ago" function.') if seconds < 0
|
44
|
-
TwitterCldr::LocalizedTimespan.new(seconds, options.merge(:locale => @locale))
|
45
|
-
end
|
46
|
-
|
47
|
-
def to_s
|
48
|
-
to_default_s
|
49
|
-
end
|
50
|
-
|
51
|
-
def to_date
|
52
|
-
LocalizedDate.new(Date.parse(@base_obj.strftime("%Y-%m-%dT%H:%M:%S%z")), @locale, :calendar_type => @calendar_type)
|
53
|
-
end
|
54
|
-
|
55
|
-
def to_time
|
56
|
-
LocalizedTime.new(Time.parse(@base_obj.strftime("%Y-%m-%dT%H:%M:%S%z")), @locale, :calendar_type => @calendar_type)
|
57
|
-
end
|
58
|
-
|
59
|
-
protected
|
60
|
-
|
61
|
-
def formatter_const
|
62
|
-
TwitterCldr::Formatters::DateTimeFormatter
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Copyright 2012 Twitter, Inc
|
4
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
-
|
6
|
-
class Time
|
7
|
-
def localize(locale = TwitterCldr.get_locale, options = {})
|
8
|
-
TwitterCldr::LocalizedTime.new(self, locale, options)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
module TwitterCldr
|
13
|
-
class LocalizedTime < LocalizedDateTime
|
14
|
-
def to_datetime(date)
|
15
|
-
date_obj = date.is_a?(LocalizedDate) ? date.base_obj : date
|
16
|
-
LocalizedDateTime.new(DateTime.parse("#{date_obj.strftime("%Y-%m-%d")}T#{@base_obj.strftime("%H:%M:%S%z")}"), @locale, :calendar_type => @calendar_type)
|
17
|
-
end
|
18
|
-
|
19
|
-
protected
|
20
|
-
|
21
|
-
def formatter_const
|
22
|
-
TwitterCldr::Formatters::TimeFormatter
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Copyright 2012 Twitter, Inc
|
4
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
-
|
6
|
-
module TwitterCldr
|
7
|
-
class LocalizedTimespan < LocalizedObject
|
8
|
-
|
9
|
-
def initialize(seconds, options = {})
|
10
|
-
super(seconds, options[:locale], options)
|
11
|
-
@formatter = TwitterCldr::Formatters::TimespanFormatter.new(options)
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_s(options = {})
|
15
|
-
@formatter.format(@base_obj, options)
|
16
|
-
end
|
17
|
-
|
18
|
-
protected
|
19
|
-
|
20
|
-
def formatter_const
|
21
|
-
TwitterCldr::Formatters::TimespanFormatter
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Copyright 2012 Twitter, Inc
|
4
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
-
|
6
|
-
module TwitterCldr
|
7
|
-
class LocalizedObject
|
8
|
-
attr_reader :locale, :base_obj, :formatter
|
9
|
-
|
10
|
-
def initialize(obj, locale, options = {})
|
11
|
-
@base_obj = obj
|
12
|
-
@locale = TwitterCldr.convert_locale(locale)
|
13
|
-
@locale = TwitterCldr::DEFAULT_LOCALE unless TwitterCldr.supported_locale?(@locale)
|
14
|
-
|
15
|
-
options = options.dup
|
16
|
-
options[:locale] = @locale
|
17
|
-
|
18
|
-
@formatter = formatter_const.new(options) if formatter_const
|
19
|
-
end
|
20
|
-
|
21
|
-
def formatter_const
|
22
|
-
raise NotImplementedError
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Copyright 2012 Twitter, Inc
|
4
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
-
|
6
|
-
module TwitterCldr
|
7
|
-
|
8
|
-
module LocalizedNumberMixin
|
9
|
-
def localize(locale = TwitterCldr.get_locale)
|
10
|
-
TwitterCldr::LocalizedNumber.new(self, locale)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
class LocalizedNumber < LocalizedObject
|
15
|
-
TYPES = [:decimal, :currency, :percent]
|
16
|
-
DEFAULT_TYPE = :decimal
|
17
|
-
|
18
|
-
attr_reader :type
|
19
|
-
|
20
|
-
def initialize(obj, locale, options = {})
|
21
|
-
@options = options.dup
|
22
|
-
|
23
|
-
@type = @options.delete(:type) || DEFAULT_TYPE
|
24
|
-
raise ArgumentError.new("type #{@type} is not supported") unless @type && TYPES.include?(@type.to_sym)
|
25
|
-
|
26
|
-
super(obj, locale, @options)
|
27
|
-
end
|
28
|
-
|
29
|
-
TYPES.each do |type|
|
30
|
-
define_method "to_#{type}" do
|
31
|
-
to_type(type)
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
def to_s(options = {})
|
36
|
-
@formatter.format(@base_obj, options)
|
37
|
-
end
|
38
|
-
|
39
|
-
def plural_rule
|
40
|
-
TwitterCldr::Formatters::Plurals::Rules.rule_for(@base_obj, @locale)
|
41
|
-
end
|
42
|
-
|
43
|
-
protected
|
44
|
-
|
45
|
-
def formatter_const
|
46
|
-
TwitterCldr::Formatters.const_get("#{@type.to_s.capitalize}Formatter")
|
47
|
-
end
|
48
|
-
|
49
|
-
def to_type(target_type)
|
50
|
-
self.class.new(@base_obj, @locale, @options.merge(:type => target_type))
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Copyright 2012 Twitter, Inc
|
4
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
-
|
6
|
-
class String
|
7
|
-
def localize(locale = TwitterCldr.get_locale)
|
8
|
-
TwitterCldr::LocalizedString.new(self, locale)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
module TwitterCldr
|
13
|
-
class LocalizedString < LocalizedObject
|
14
|
-
VALID_NORMALIZERS = [:NFD, :NFKD, :NFC, :NFKC]
|
15
|
-
|
16
|
-
# Uses wrapped string object as a format specification and returns the result of applying it to +args+ (see
|
17
|
-
# +TwitterCldr::Utils.interpolate+ method for interpolation syntax).
|
18
|
-
#
|
19
|
-
# If +args+ is a Hash than pluralization is performed before interpolation (see +PluralFormatter+ class for
|
20
|
-
# pluralization specification).
|
21
|
-
#
|
22
|
-
def %(args)
|
23
|
-
pluralized = args.is_a?(Hash) ? @formatter.format(@base_obj, args) : @base_obj
|
24
|
-
TwitterCldr::Utils.interpolate(pluralized, args)
|
25
|
-
end
|
26
|
-
|
27
|
-
def formatter_const
|
28
|
-
TwitterCldr::Formatters::PluralFormatter
|
29
|
-
end
|
30
|
-
|
31
|
-
def normalize(options = {})
|
32
|
-
options[:using] ||= :NFD
|
33
|
-
|
34
|
-
if VALID_NORMALIZERS.include?(options[:using])
|
35
|
-
normalizer_const = TwitterCldr::Normalization.const_get(options[:using])
|
36
|
-
LocalizedString.new(normalizer_const.normalize(@base_obj), @locale)
|
37
|
-
else
|
38
|
-
raise ArgumentError.new("Invalid normalization form specified with :using option. Choices are [#{VALID_NORMALIZERS.map(&:to_s).join(", ")}]")
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
def code_points
|
43
|
-
TwitterCldr::Utils::CodePoints.from_string(@base_obj)
|
44
|
-
end
|
45
|
-
|
46
|
-
def to_s
|
47
|
-
@base_obj.dup
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Copyright 2012 Twitter, Inc
|
4
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
-
|
6
|
-
class Symbol
|
7
|
-
def localize(locale = TwitterCldr.get_locale)
|
8
|
-
TwitterCldr::LocalizedSymbol.new(self, locale)
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
module TwitterCldr
|
13
|
-
class LocalizedSymbol < LocalizedObject
|
14
|
-
def as_language_code
|
15
|
-
TwitterCldr::Shared::Languages.from_code_for_locale(@base_obj, @locale)
|
16
|
-
end
|
17
|
-
|
18
|
-
def formatter_const
|
19
|
-
nil
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,90 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Copyright 2012 Twitter, Inc
|
4
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
5
|
-
|
6
|
-
require 'spec_helper'
|
7
|
-
|
8
|
-
include TwitterCldr
|
9
|
-
|
10
|
-
describe DateTime do
|
11
|
-
describe "#localize" do
|
12
|
-
let(:date) { DateTime.now }
|
13
|
-
it "should localize with the given locale, English by default" do
|
14
|
-
loc_date = date.localize
|
15
|
-
loc_date.should be_a(LocalizedDateTime)
|
16
|
-
loc_date.locale.should == :en
|
17
|
-
loc_date.calendar_type.should == :gregorian
|
18
|
-
loc_date.base_obj.should == date
|
19
|
-
|
20
|
-
loc_date = DateTime.now.localize(:it)
|
21
|
-
loc_date.should be_a(LocalizedDateTime)
|
22
|
-
loc_date.locale.should == :it
|
23
|
-
end
|
24
|
-
|
25
|
-
it "should localize with the given calendar" do
|
26
|
-
loc_date = date.localize(:th, :calendar_type => :buddhist)
|
27
|
-
loc_date.should be_a(LocalizedDateTime)
|
28
|
-
loc_date.locale.should == :th
|
29
|
-
loc_date.calendar_type.should == :buddhist
|
30
|
-
loc_date.base_obj.should == date
|
31
|
-
end
|
32
|
-
|
33
|
-
it "should forward calendar_type" do
|
34
|
-
loc_date = date.localize(:th, :calendar_type => :buddhist)
|
35
|
-
loc_date.to_date.calendar_type.should == :buddhist
|
36
|
-
loc_date.to_time.calendar_type.should == :buddhist
|
37
|
-
end
|
38
|
-
|
39
|
-
it "should default to English if the given locale isn't supported" do
|
40
|
-
loc_date = date.localize(:xx)
|
41
|
-
loc_date.locale.should == :en
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
describe "stringify" do
|
46
|
-
it "should stringify with a default calendar" do
|
47
|
-
#DateTime.now.localize(:th, :calendar_type => :buddhist).to_full_s # It doesn't support era
|
48
|
-
DateTime.now.localize(:th).to_long_s
|
49
|
-
DateTime.now.localize(:th).to_medium_s
|
50
|
-
DateTime.now.localize(:th).to_short_s
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should stringify with buddhist calendar" do
|
54
|
-
# Ensure that buddhist calendar data is present in th locale.
|
55
|
-
TwitterCldr.get_locale_resource(:th, :calendars)[:th][:calendars][:buddhist].should_not(
|
56
|
-
be_nil, 'buddhist calendar is missing for :th locale (check resources/locales/th/calendars.yml)'
|
57
|
-
)
|
58
|
-
|
59
|
-
#DateTime.now.localize(:th, :calendar_type => :buddhist).to_full_s # It doesn't support era
|
60
|
-
DateTime.now.localize(:th, :calendar_type => :buddhist).to_long_s
|
61
|
-
DateTime.now.localize(:th, :calendar_type => :buddhist).to_medium_s
|
62
|
-
DateTime.now.localize(:th, :calendar_type => :buddhist).to_short_s
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
describe LocalizedDateTime do
|
68
|
-
describe "#to_date" do
|
69
|
-
it "should convert to a date" do
|
70
|
-
date = DateTime.new(1987, 9, 20, 22, 5).localize.to_date
|
71
|
-
date.should be_a(LocalizedDate)
|
72
|
-
date.base_obj.strftime("%Y-%m-%d").should == "1987-09-20"
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
describe "#to_time" do
|
77
|
-
it "should convert to a time" do
|
78
|
-
time = DateTime.new(1987, 9, 20, 22, 5).localize.to_time
|
79
|
-
time.should be_a(LocalizedTime)
|
80
|
-
time.base_obj.getgm.strftime("%H:%M:%S").should == "22:05:00"
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
describe "#to_timespan" do
|
85
|
-
it "should return a localized timespan with a direction of :none" do
|
86
|
-
ts = DateTime.new(1987, 9, 20, 22, 5).localize.to_timespan
|
87
|
-
ts.formatter.instance_variable_get(:'@direction').should == :none
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|