time_date_helpers 0.0.1

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.
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .DS_Store
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in time_date_helpers.gemspec
4
+ gemspec
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,6 @@
1
+ # Provided by bundler to track the version
2
+ require "time_date_helpers/version"
3
+
4
+ # Our code broken into submodules
5
+ require "time_date_helpers/time_helpers"
6
+ require "time_date_helpers/date_helpers"
@@ -0,0 +1,37 @@
1
+ module TimeDateHelpers
2
+ module DateHelpers
3
+ # convert a date to human format of mm/dd/yyyy
4
+ def humanize_date(date, opt={})
5
+ # Set the default options
6
+ options = {:style => :calendar}
7
+ # Merge whatever options the user has selected with the defaults
8
+ options.merge!(opt)
9
+ # Make sure what is passed is legit
10
+ return nil if date.nil?
11
+ return nil unless date.class == Date || date.class == Time || date.class == DateTime
12
+ if options[:style] == :calendar
13
+ date.strftime("%m/%d/%Y")
14
+ elsif options[:style] == :full
15
+ date.day < 10 ? date.strftime("%B%e, %Y") : date.strftime("%B %e, %Y")
16
+ else
17
+ nil
18
+ end
19
+ end
20
+
21
+ # convert a string to a date (using Chronic, of course)
22
+ def convert_to_date(string)
23
+ return nil if (string.nil? || string.class != String)
24
+ tmp = Chronic.parse(string)
25
+ tmp ? tmp.to_date : nil
26
+ end
27
+
28
+ # convert a string to a datetime (Chronic's default)
29
+ def convert_to_datetime(string)
30
+ return nil if (string.nil? || string.class != String)
31
+ Chronic.parse(string)
32
+ end
33
+ end
34
+ end
35
+
36
+ # Add methods to Object so can be called directly in main
37
+ Object.send :include, TimeDateHelpers::DateHelpers
@@ -0,0 +1,41 @@
1
+ module TimeDateHelpers
2
+ module TimeHelpers
3
+ def round_minutes(time, opt={})
4
+ # Set the default options
5
+ options = {:direction => :up, :increment => 15}
6
+ # Merge whatever options the user has selected with the defaults
7
+ options.merge!(opt)
8
+
9
+ # make sure that increment is a Fixnum between 1 and 59
10
+ return nil unless options[:increment].class == Fixnum
11
+ return nil if (options[:increment] > 59 || options[:increment] < 1)
12
+
13
+ # Set up some local variables used in calculations
14
+ new_min, hr_adj = time.min, 0
15
+ total_segments = (60.0/options[:increment]).ceil # Need to round up
16
+ closest_segment_down = (new_min/options[:increment])
17
+ closest_segment_up = (new_min/options[:increment]) + 1
18
+
19
+ # Now it is time to actually adjust the minutes (and perhaps hour)
20
+ if (new_min - options[:increment]*closest_segment_down) == 0
21
+ new_min # we are on an increment, so just return the minutes
22
+ elsif options[:direction] == :up
23
+ # if rounding up, need to check if up against the end-of-the-hour limit
24
+ if closest_segment_up == total_segments
25
+ new_min = 00; hr_adj=1 # near end of hour, so move up to next hour
26
+ else
27
+ new_min = options[:increment]*(closest_segment_up)
28
+ end
29
+ else
30
+ # we are rounding down, which is very easy
31
+ new_min = options[:increment]*(closest_segment_down)
32
+ end
33
+
34
+ # Finally, return the adjusted time
35
+ Time.new(time.year, time.month, time.day, (time.hour+hr_adj), new_min, 0)
36
+ end
37
+ end
38
+ end
39
+
40
+ # Add to the Object model so can call directly in main
41
+ Object.send :include, TimeDateHelpers::TimeHelpers
@@ -0,0 +1,3 @@
1
+ module TimeDateHelpers
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "time_date_helpers/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "time_date_helpers"
7
+ s.version = TimeDateHelpers::VERSION
8
+ s.authors = ["Klingon Code Warrior"]
9
+ s.email = ["profh@cmu.edu"]
10
+ s.homepage = ""
11
+ s.summary = %q{A series of helpers to deal with time and date issues in Rails.}
12
+ s.description = %q{The initial version has only a few date and time helpers and was created primarily for teaching purposes (how to create gems), but does have some value. I will try to get back to this gem and add more methods as time allows.}
13
+
14
+ s.rubyforge_project = "time_date_helpers"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ s.add_development_dependency "chronic"
23
+ s.add_runtime_dependency "chronic"
24
+ end
metadata ADDED
@@ -0,0 +1,78 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: time_date_helpers
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Klingon Code Warrior
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-03 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: chronic
16
+ requirement: &2153346800 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *2153346800
25
+ - !ruby/object:Gem::Dependency
26
+ name: chronic
27
+ requirement: &2153362400 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *2153362400
36
+ description: The initial version has only a few date and time helpers and was created
37
+ primarily for teaching purposes (how to create gems), but does have some value.
38
+ I will try to get back to this gem and add more methods as time allows.
39
+ email:
40
+ - profh@cmu.edu
41
+ executables: []
42
+ extensions: []
43
+ extra_rdoc_files: []
44
+ files:
45
+ - .gitignore
46
+ - Gemfile
47
+ - Rakefile
48
+ - lib/time_date_helpers.rb
49
+ - lib/time_date_helpers/date_helpers.rb
50
+ - lib/time_date_helpers/time_helpers.rb
51
+ - lib/time_date_helpers/version.rb
52
+ - time_date_helpers.gemspec
53
+ homepage: ''
54
+ licenses: []
55
+ post_install_message:
56
+ rdoc_options: []
57
+ require_paths:
58
+ - lib
59
+ required_ruby_version: !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ! '>='
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ requirements: []
72
+ rubyforge_project: time_date_helpers
73
+ rubygems_version: 1.8.15
74
+ signing_key:
75
+ specification_version: 3
76
+ summary: A series of helpers to deal with time and date issues in Rails.
77
+ test_files: []
78
+ has_rdoc: