timezone 0.1.2 → 0.1.3
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/README.markdown +7 -0
- data/lib/timezone/version.rb +1 -1
- data/lib/timezone/zone.rb +25 -3
- data/test/timezone_test.rb +7 -0
- metadata +4 -6
data/README.markdown
CHANGED
@@ -41,3 +41,10 @@ Finally, pass the coordinates to your timezone initialization function.
|
|
41
41
|
=> "Australia/Adelaide"
|
42
42
|
timezone.time Time.now
|
43
43
|
=> 2011-02-12 12:02:13 UTC
|
44
|
+
|
45
|
+
## Getting the complete list of timezones.
|
46
|
+
|
47
|
+
Retrieving the complete list of timezones is quite simple:
|
48
|
+
|
49
|
+
timezones = Timezone::Zone.names
|
50
|
+
=> ["Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", ...]
|
data/lib/timezone/version.rb
CHANGED
data/lib/timezone/zone.rb
CHANGED
@@ -10,6 +10,8 @@ module Timezone
|
|
10
10
|
include Comparable
|
11
11
|
attr_accessor :rules, :zone
|
12
12
|
|
13
|
+
ZONE_FILE_PATH = File.expand_path(File.dirname(__FILE__)+'/../../data')
|
14
|
+
|
13
15
|
# Create a new Timezone object.
|
14
16
|
#
|
15
17
|
# Timezone.new(options)
|
@@ -30,14 +32,34 @@ module Timezone
|
|
30
32
|
|
31
33
|
raise Timezone::Error::NilZone, 'No zone was found. Please specify a zone.' if options[:zone].nil?
|
32
34
|
|
33
|
-
|
34
|
-
raise Timezone::Error::InvalidZone, "'#{options[:zone]}' is not a valid zone." unless File.exists?(file)
|
35
|
+
data = Zone.get_zone_data(options[:zone])
|
35
36
|
|
36
|
-
data = JSON.parse(open(file).read)
|
37
37
|
@rules = data['zone']
|
38
38
|
@zone = data['_zone'] || options[:zone]
|
39
39
|
end
|
40
40
|
|
41
|
+
|
42
|
+
class << self
|
43
|
+
|
44
|
+
# Retrieve the data from a particular time zone
|
45
|
+
def get_zone_data(zone)
|
46
|
+
file = File.join(ZONE_FILE_PATH, "#{zone}.json")
|
47
|
+
begin
|
48
|
+
return JSON.parse(open(file).read)
|
49
|
+
rescue
|
50
|
+
raise Timezone::Error::InvalidZone, "'#{zone}' is not a valid zone."
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Instantly grab all possible time zone names.
|
55
|
+
def names
|
56
|
+
Dir[File.join(ZONE_FILE_PATH, "**/**/*.json")].collect do |file|
|
57
|
+
file.gsub("#{ZONE_FILE_PATH}/", '').gsub(/\.json/, '')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
41
63
|
# Determine the time in the timezone.
|
42
64
|
#
|
43
65
|
# timezone.time(reference)
|
data/test/timezone_test.rb
CHANGED
@@ -22,6 +22,13 @@ class TimezoneTest < Test::Unit::TestCase
|
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
+
def test_timezone_names
|
26
|
+
zones = Timezone::Zone.names
|
27
|
+
assert zones.is_a?(Array)
|
28
|
+
assert zones.count > 0
|
29
|
+
assert zones.include? "Australia/Sydney"
|
30
|
+
end
|
31
|
+
|
25
32
|
def time_timezone_equivalence
|
26
33
|
gmt = Timezone::Zone.new :zone => 'GMT'
|
27
34
|
australia = Timezone::Zone.new :zone => 'Australia/Sydney'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: timezone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-
|
13
|
-
default_executable:
|
12
|
+
date: 2011-10-21 00:00:00.000000000Z
|
14
13
|
dependencies: []
|
15
14
|
description: A simple way to get accurate current and historical timezone information
|
16
15
|
based on zone or latitude and longitude coordinates. This gem uses the tz database
|
@@ -495,7 +494,6 @@ files:
|
|
495
494
|
- lib/timezone/zone.rb
|
496
495
|
- test/timezone_test.rb
|
497
496
|
- timezone.gemspec
|
498
|
-
has_rdoc: true
|
499
497
|
homepage: http://github.com/panthomakos/timezone
|
500
498
|
licenses: []
|
501
499
|
post_install_message:
|
@@ -517,9 +515,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
517
515
|
version: '0'
|
518
516
|
requirements: []
|
519
517
|
rubyforge_project: timezone
|
520
|
-
rubygems_version: 1.6
|
518
|
+
rubygems_version: 1.8.6
|
521
519
|
signing_key:
|
522
520
|
specification_version: 3
|
523
|
-
summary: timezone-0.1.
|
521
|
+
summary: timezone-0.1.3
|
524
522
|
test_files:
|
525
523
|
- test/timezone_test.rb
|