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 +1 -1
- data/fossil.gemspec +1 -1
- data/lib/models/trip_leg.rb +1 -1
- data/lib/sequel/fos_dates.rb +40 -50
- data/lib/sequel/model_patch.rb +5 -3
- data/spec/sequel/fos_dates_spec.rb +2 -3
- data/spec/sequel/model_patch_spec.rb +1 -1
- metadata +1 -1
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.28
|
data/fossil.gemspec
CHANGED
data/lib/models/trip_leg.rb
CHANGED
@@ -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.
|
714
|
+
Time.from_minutes(minutes_between)
|
715
715
|
end
|
716
716
|
|
717
717
|
#### aliases and special methods #####
|
data/lib/sequel/fos_dates.rb
CHANGED
@@ -13,59 +13,42 @@ end
|
|
13
13
|
|
14
14
|
module TimeFunctions
|
15
15
|
|
16
|
-
def
|
17
|
-
|
18
|
-
klass.send(:extend,TimeFunctions::ClassMethods)
|
16
|
+
def as_minutes
|
17
|
+
hour*60 + min
|
19
18
|
end
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
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
|
-
|
61
|
-
|
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
|
-
#
|
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
|
-
|
85
|
-
|
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
|
data/lib/sequel/model_patch.rb
CHANGED
@@ -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
|
-
|
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)
|
192
|
+
Date.from_fos_days(column_value)
|
193
|
+
# Date.from_fos_days(column_value) if column_value
|
193
194
|
when :time
|
194
|
-
Time.
|
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(
|
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(
|
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(
|
268
|
+
TestTable.first.datetime_col.should == DateTime.new(1899,12,31,0,0,0)
|
269
269
|
end
|
270
270
|
|
271
271
|
end
|