time_date_helpers 0.0.2 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: d7f2a9d9ffd2107fe83c23cabe46eefa9067acaa15884b2cfe103f92c85ad44b
4
+ data.tar.gz: 902901cc08f369a542bb07ccfb9a6a26d7aec64fce7724546d7853d45358f697
5
+ SHA512:
6
+ metadata.gz: c212c758d9a911efe814a5cf947cd4c5947c8d756aa559e973730f733d50c4ccf649fa2f485c7defd8d0643750821ab36a3dfba06afab70efaba9d3397d0ff43
7
+ data.tar.gz: 6540be1a5af14f4285e627a0027b2ea05a998cd17969dd1d86353a89509a520c53df16f46ee3088133d07f2caff12b8a954d05a648b8fc2ef3517fca7a747c00
@@ -6,8 +6,8 @@ module TimeDateHelpers
6
6
  # Merge whatever options the user has selected with the defaults
7
7
  options.merge!(opt)
8
8
 
9
- # make sure that increment is a Fixnum between 1 and 59
10
- return nil unless options[:increment].class == Fixnum
9
+ # make sure that increment is a Integer between 1 and 59
10
+ return nil unless options[:increment].class == Integer
11
11
  return nil if (options[:increment] > 59 || options[:increment] < 1)
12
12
 
13
13
  # Set up some local variables used in calculations
@@ -35,6 +35,41 @@ module TimeDateHelpers
35
35
  Time.new(time.year, time.month, time.day, (time.hour+hr_adj), new_min, 0)
36
36
  end
37
37
 
38
+ def round_hours(start_time, end_time, opt={})
39
+ # Set the default options
40
+ options = {:direction => :up, :increment => 15}
41
+ # Merge whatever options the user has selected with the defaults
42
+ options.merge!(opt)
43
+
44
+ # make sure that increment is a Integer between 1 and 59
45
+ return nil unless options[:increment].class == Integer
46
+ return nil if (options[:increment] > 59 || options[:increment] < 1)
47
+
48
+ # Set up some local variables used in calculations
49
+ new_start_min, new_end_min, hr_adj = start_time.min, end_time.min, 0
50
+ total_segments = (60.0/options[:increment]).ceil # Need to round up
51
+ closest_segment_down = (new_min/options[:increment])
52
+ closest_segment_up = (new_min/options[:increment]) + 1
53
+
54
+ # Now it is time to actually adjust the minutes (and perhaps hour)
55
+ if (new_min - options[:increment]*closest_segment_down) == 0
56
+ new_min # we are on an increment, so just return the minutes
57
+ elsif options[:direction] == :up
58
+ # if rounding up, need to check if up against the end-of-the-hour limit
59
+ if closest_segment_up == total_segments
60
+ new_min = 00; hr_adj=1 # near end of hour, so move up to next hour
61
+ else
62
+ new_min = options[:increment]*(closest_segment_up)
63
+ end
64
+ else
65
+ # we are rounding down, which is very easy
66
+ new_min = options[:increment]*(closest_segment_down)
67
+ end
68
+
69
+ # Finally, return the adjusted time
70
+ Time.new(time.year, time.month, time.day, (time.hour+hr_adj), new_min, 0)
71
+ end
72
+
38
73
  def humanize_time(time, opt={})
39
74
  # Set the default options
40
75
  options = {:ampm => true, :with_seconds => false}
@@ -1,3 +1,3 @@
1
1
  module TimeDateHelpers
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -1,8 +1,8 @@
1
- require 'test/unit'
1
+ require "minitest/autorun"
2
2
  require 'chronic'
3
3
  require 'time_date_helpers'
4
4
 
5
- class DateHelperTests < Test::Unit::TestCase
5
+ class DateHelperTests < Minitest::Test
6
6
 
7
7
  # Test humanize_date method
8
8
  def test_humanize_date_works
@@ -45,6 +45,7 @@ class DateHelperTests < Test::Unit::TestCase
45
45
  date5 = "April 1, 1999"
46
46
  assert_equal 10, convert_to_date(date1).month
47
47
  assert_equal Date.today + 1, convert_to_date(date2)
48
+ # note that the assertion below will fail right after the switch to/from DST
48
49
  assert_equal Date.today - 1, convert_to_date(date3)
49
50
  assert_equal 25, convert_to_date(date4).day
50
51
  assert_equal 1999, convert_to_date(date5).year
@@ -64,6 +65,7 @@ class DateHelperTests < Test::Unit::TestCase
64
65
  today = Date.today
65
66
  assert_equal 10, convert_to_datetime(datetime1).month
66
67
  assert_equal Time.new((today).year, (today).month, (today+1).day, 12, 0, 0), convert_to_datetime(datetime2)
68
+ # note that the assertion below will fail right after the switch to/from DST
67
69
  assert_equal Time.new((today).year, (today).month, (today-1).day, 15, 0, 0), convert_to_datetime(datetime3)
68
70
  assert_equal 8, convert_to_datetime(datetime4).hour
69
71
  assert_equal 22, convert_to_datetime(datetime5).hour
@@ -1,7 +1,7 @@
1
- require 'test/unit'
1
+ require "minitest/autorun"
2
2
  require 'time_date_helpers'
3
3
 
4
- class TimeHelperTests < Test::Unit::TestCase
4
+ class TimeHelperTests < Minitest::Test
5
5
 
6
6
  def test_default_settings
7
7
  quarter1 = Time.new(2012, 04, 30, 9, 6, 0)
@@ -109,7 +109,7 @@ class TimeHelperTests < Test::Unit::TestCase
109
109
  assert_equal '03:14:15 pm', humanize_time(time4, :with_seconds => true)
110
110
  end
111
111
 
112
- def test_humanize_time_fails_for_nondates
112
+ def test_humanize_time_fails_for_nontimes
113
113
  time1 = nil
114
114
  time2 = "10/04/1986"
115
115
  time3 = 3.14159
@@ -6,6 +6,7 @@ Gem::Specification.new do |s|
6
6
  s.name = "time_date_helpers"
7
7
  s.version = TimeDateHelpers::VERSION
8
8
  s.authors = ["Klingon Code Warrior"]
9
+ s.licenses = ['MIT']
9
10
  s.email = ["profh@cmu.edu"]
10
11
  s.homepage = "https://github.com/profh/time_date_helpers"
11
12
  s.summary = %q{A series of helpers to deal with time and date issues in Rails.}
metadata CHANGED
@@ -1,38 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: time_date_helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
5
- prerelease:
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Klingon Code Warrior
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-05-03 00:00:00.000000000 Z
11
+ date: 2019-11-19 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: chronic
16
- requirement: &2154777240 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *2154777240
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
28
  name: chronic
27
- requirement: &2154776540 !ruby/object:Gem::Requirement
28
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :runtime
34
35
  prerelease: false
35
- version_requirements: *2154776540
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  description: The initial version has only a few date and time helpers and was created
37
42
  primarily for teaching purposes (how to create gems), but does have some value.
38
43
  I will try to get back to this gem and add more methods as time allows.
@@ -42,7 +47,7 @@ executables: []
42
47
  extensions: []
43
48
  extra_rdoc_files: []
44
49
  files:
45
- - .gitignore
50
+ - ".gitignore"
46
51
  - Gemfile
47
52
  - README.mkd
48
53
  - Rakefile
@@ -54,28 +59,27 @@ files:
54
59
  - tests/time_tests.rb
55
60
  - time_date_helpers.gemspec
56
61
  homepage: https://github.com/profh/time_date_helpers
57
- licenses: []
62
+ licenses:
63
+ - MIT
64
+ metadata: {}
58
65
  post_install_message:
59
66
  rdoc_options: []
60
67
  require_paths:
61
68
  - lib
62
69
  required_ruby_version: !ruby/object:Gem::Requirement
63
- none: false
64
70
  requirements:
65
- - - ! '>='
71
+ - - ">="
66
72
  - !ruby/object:Gem::Version
67
73
  version: '0'
68
74
  required_rubygems_version: !ruby/object:Gem::Requirement
69
- none: false
70
75
  requirements:
71
- - - ! '>='
76
+ - - ">="
72
77
  - !ruby/object:Gem::Version
73
78
  version: '0'
74
79
  requirements: []
75
80
  rubyforge_project: time_date_helpers
76
- rubygems_version: 1.8.15
81
+ rubygems_version: 2.7.6.2
77
82
  signing_key:
78
- specification_version: 3
83
+ specification_version: 4
79
84
  summary: A series of helpers to deal with time and date issues in Rails.
80
85
  test_files: []
81
- has_rdoc: