fossil 0.3.27 → 0.3.28

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/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.27
1
+ 0.3.28
data/fossil.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{fossil}
8
- s.version = "0.3.27"
8
+ s.version = "0.3.28"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Patrick Lardin, Daniel Sudol"]
@@ -711,7 +711,7 @@ class TripLeg < Sequel::Model(:'trip legs')
711
711
 
712
712
  def ebt_time
713
713
  minutes_between = (planned_arrival_date_time_gmt - planned_departure_date_time_gmt)/60;
714
- Time.from_fos_time(minutes_between)
714
+ Time.from_minutes(minutes_between)
715
715
  end
716
716
 
717
717
  #### aliases and special methods #####
@@ -13,59 +13,42 @@ end
13
13
 
14
14
  module TimeFunctions
15
15
 
16
- def self.included(klass)
17
- klass.send(:include,TimeFunctions::InstanceMethods)
18
- klass.send(:extend,TimeFunctions::ClassMethods)
16
+ def as_minutes
17
+ hour*60 + min
19
18
  end
20
19
 
21
- module InstanceMethods
22
- def as_minutes
23
- hour*60 + min
24
- end
25
-
26
- def in_hundredths
27
- return 0 if hour + min == 0
28
- minutes = hour*60 + min
29
- val = "#{minutes/60}.#{((100*(minutes.modulo(60)))/60).to_s.rjust(2, '0')}"
30
- BigDecimal.new(val, 2).round(1).to_s
31
- end
32
-
33
- # xos is rounding XOJET STYLE, which is a funky copy of how ipc did it
34
- def in_hundredths_rounded_xos
35
- return 0 if hour + min == 0
36
- # It was determined that "ODD" increments of .05 (ie .15, .35, .55, .75, .95) of an hour (ie. 9,21,33,45,57 minutes) rounded UP whereas even increments of .05 rounded DOWN - sn
37
- minutes = as_minutes
38
- (minutes/60.0 + ([9, 21, 33, 45, 57].include?( min ) ? 0.001 : -0.001)).round(2)
39
- end
40
-
41
- # xos is rounding XOJET STYLE, which is a funky copy of how ipc did it
42
- def in_tenths_rounded_xos
43
- return 0 if hour + min == 0
44
- # It was determined that "ODD" increments of .05 (ie .15, .35, .55, .75, .95) of an hour (ie. 9,21,33,45,57 minutes) rounded UP whereas even increments of .05 rounded DOWN - sn
45
- minutes = as_minutes
46
- (minutes/60.0 + ([9, 21, 33, 45, 57].include?( min ) ? 0.01 : -0.01)).round(1)
47
- end
48
-
49
- def hm
50
- to_s(:hm)
51
- end
20
+ def in_hundredths
21
+ return 0 if hour + min == 0
22
+ minutes = hour*60 + min
23
+ val = "#{minutes/60}.#{((100*(minutes.modulo(60)))/60).to_s.rjust(2, '0')}"
24
+ BigDecimal.new(val, 2).round(1).to_s
52
25
  end
53
26
 
54
- module ClassMethods
55
- # creates utc time from days and minutes
56
- def from_fos_date_time(days, minutes)
57
- from_fos_time(days*1440 + minutes)
58
- end
27
+ # xos is rounding XOJET STYLE, which is a funky copy of how ipc did it
28
+ def in_hundredths_rounded_xos
29
+ return 0 if hour + min == 0
30
+ # It was determined that "ODD" increments of .05 (ie .15, .35, .55, .75, .95) of an hour (ie. 9,21,33,45,57 minutes) rounded UP whereas even increments of .05 rounded DOWN - sn
31
+ minutes = as_minutes
32
+ (minutes/60.0 + ([9, 21, 33, 45, 57].include?( min ) ? 0.001 : -0.001)).round(2)
33
+ end
34
+
35
+ # xos is rounding XOJET STYLE, which is a funky copy of how ipc did it
36
+ def in_tenths_rounded_xos
37
+ return 0 if hour + min == 0
38
+ # It was determined that "ODD" increments of .05 (ie .15, .35, .55, .75, .95) of an hour (ie. 9,21,33,45,57 minutes) rounded UP whereas even increments of .05 rounded DOWN - sn
39
+ minutes = as_minutes
40
+ (minutes/60.0 + ([9, 21, 33, 45, 57].include?( min ) ? 0.01 : -0.01)).round(1)
41
+ end
59
42
 
60
- # creates utc time from minutes
61
- def from_fos_time(minutes)
62
- DateTime.new(1899, 12, 31).advance(:minutes=>minutes)
63
- end
43
+ def hm
44
+ to_s(:hm)
64
45
  end
46
+
65
47
  end
66
48
 
67
49
  class Time
68
50
  include TimeFunctions
51
+
69
52
  DATE_FORMATS[:hm] = "%H:%M"
70
53
 
71
54
  alias :original_to_s :to_s
@@ -75,17 +58,24 @@ class Time
75
58
  self.original_to_s(args)
76
59
  end
77
60
 
78
- # overriding default behavior from module TimeFunctions
79
- # to ensure that if you want to convert the DateTime that this function returns,
80
- # you can convert is safely to a Time class. To do this the Date part must be
81
- # at least (1901,12,14), so I am rounding to (1902,1,1), and calling that
82
- # the beginning date for a time with no hours, mins and seconds.
61
+ # using a date of 2000,1,1 is arbitrary
83
62
  def self.from_fos_time(minutes)
84
- return DateTime.new(1902,1,1) if minutes == 0
85
- DateTime.new(1899, 12, 31).advance(:minutes=>minutes)
63
+ minutes = 0 unless minutes
64
+ Time.utc(2000, 1, 1) + minutes.minutes
65
+ end
66
+
67
+ class << self
68
+ alias from_minutes from_fos_time
86
69
  end
87
70
  end
88
71
 
89
72
  class DateTime
90
73
  include TimeFunctions
74
+
75
+ # creates utc time from days and minutes
76
+ def self.from_fos_date_time(days, minutes)
77
+ days = 0 unless days
78
+ minutes = 0 unless minutes
79
+ Date.from_fos_days(days).to_datetime.advance(:minutes=>minutes)
80
+ end
91
81
  end
@@ -103,7 +103,7 @@ class Sequel::Model
103
103
  inst_def datetime_column_name do
104
104
  days = send(:[], date_column) || 0 # nil defaults to 0 days
105
105
  minutes = send(:[], time_column) || 0 # nil defaults to 0 minutes
106
- Time.from_fos_date_time(days, minutes) # returns utc time
106
+ DateTime.from_fos_date_time(days, minutes) # returns utc time
107
107
  end
108
108
  end
109
109
 
@@ -189,9 +189,11 @@ class Sequel::Model
189
189
  column_value = send(column_name)
190
190
  case type
191
191
  when :date
192
- Date.from_fos_days(column_value) if column_value
192
+ Date.from_fos_days(column_value)
193
+ # Date.from_fos_days(column_value) if column_value
193
194
  when :time
194
- Time.utc(0) + column_value.minutes if column_value
195
+ Time.from_fos_time(column_value)
196
+ # Time.utc(2000,1,1) + column_value.minutes if column_value
195
197
  when :currency
196
198
  number_to_currency( (column_value || 0).to_f/100, :unit=>'', :precision=>2)
197
199
  when :precision
@@ -4,7 +4,6 @@ describe "fos_dates" do
4
4
 
5
5
  it "Time and DateTime have proper class methods included from TimeFunctions" do
6
6
  Time.should respond_to(:from_fos_time)
7
- DateTime.should respond_to(:from_fos_time)
8
7
  end
9
8
 
10
9
  it "Time and DateTime have proper class methods included from TimeFunctions" do
@@ -17,11 +16,11 @@ describe "fos_dates" do
17
16
  end
18
17
 
19
18
  it "converts fos time number of 0 to a DateTime of (1902,1,1)" do
20
- Time.from_fos_time(0).should == DateTime.new(1902,1,1,0,0,0)
19
+ Time.from_fos_time(0).should == DateTime.new(2000,1,1,0,0,0).to_time
21
20
  end
22
21
 
23
22
  it "converts fos time number to a Ruby DateTime" do
24
- Time.from_fos_time(100).should == DateTime.new(1899,12,31,1,40,0)
23
+ Time.from_fos_time(100).should == DateTime.new(2000,1,1,1,40,0).to_time
25
24
  end
26
25
 
27
26
  it "converts a Ruby Time to hundredths" do
@@ -265,7 +265,7 @@ describe "Sequel::Model extentions" do
265
265
 
266
266
  it "datetime can handle nil date or time" do
267
267
  add_test_table_data({:date_col => nil, :time_col => nil})
268
- TestTable.first.datetime_col.should == DateTime.new(1902,1,1,0,0,0)
268
+ TestTable.first.datetime_col.should == DateTime.new(1899,12,31,0,0,0)
269
269
  end
270
270
 
271
271
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fossil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.27
4
+ version: 0.3.28
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Lardin, Daniel Sudol