dohutil 0.1.4 → 0.1.5

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,4 @@
1
+ require 'doh/app/util'
2
+
3
+ Doh::find_root_from_pwd
4
+ DohApp::require_custom_config
@@ -0,0 +1,15 @@
1
+ require 'doh/root'
2
+
3
+ module DohApp
4
+
5
+ def self.require_custom_config
6
+ path = File.expand_path(File::join(Doh::root, 'config/dohapp.rb'))
7
+ require(path) if File.exist?(path)
8
+ end
9
+
10
+ def self.init_from_file(filepath)
11
+ Doh::find_root_from_file(filepath)
12
+ DohApp::require_custom_config
13
+ end
14
+
15
+ end
@@ -1,22 +1,15 @@
1
1
  require 'bigdecimal'
2
+ require 'bigdecimal/util'
2
3
 
3
4
  class Integer
5
+ # this is being added in 1.9.3, so remove it once that is the required version
4
6
  def to_d
5
7
  to_s.to_d
6
8
  end
7
9
  end
8
10
 
9
11
  class BigDecimal
10
- alias :_original_to_s :to_s
11
- def to_s(format = 'F')
12
- _original_to_s(format)
13
- end
14
-
15
- undef inspect
16
- def inspect
17
- to_s
18
- end
19
-
12
+ # this is being added in 1.9.3, so remove it once that is the required version
20
13
  def to_d
21
14
  self
22
15
  end
@@ -25,7 +18,7 @@ class BigDecimal
25
18
  raise ArgumentError.new("digits_after_decimal must be > 0") unless digits_after_decimal > 0
26
19
  return '0.' + ('0' * digits_after_decimal) if nan? || infinite?
27
20
 
28
- retval = truncate(digits_after_decimal).to_s
21
+ retval = truncate(digits_after_decimal).to_s('F')
29
22
  digits_needed = retval.index('.') + digits_after_decimal + 1 - retval.size
30
23
  retval += ('0' * digits_needed) if digits_needed > 0
31
24
 
@@ -1,29 +1,10 @@
1
1
  require 'date'
2
- require 'time'
3
2
 
4
3
  class Date
5
4
  def self.days_in_month(year, month)
6
5
  civil(year, month, -1).mday
7
6
  end
8
7
 
9
- def self.smart_parse(datestr)
10
- if datestr =~ /\A(\d\d)\/(\d\d)\/(\d\d)\z/
11
- month = $1.to_i
12
- mday = $2.to_i
13
- year = $3.to_i
14
- result = Date.new(year, month, mday)
15
- else
16
- result = Date.parse(datestr)
17
- end
18
-
19
- if result.year < 50
20
- result = Date.new(result.year + 2000, result.month, result.day)
21
- elsif result.year < 100
22
- result = Date.new(result.year + 1900, result.month, result.day)
23
- end
24
- result
25
- end
26
-
27
8
  undef inspect
28
9
  def inspect
29
10
  strftime('%F')
@@ -33,77 +14,7 @@ class Date
33
14
  (wday > 0) && (wday < 6)
34
15
  end
35
16
 
36
- def date_only
37
- self
38
- end
39
-
40
- def self.short_weekday_to_num(weekday)
41
- @@short_days_of_week ||= Time::RFC2822_DAY_NAME.collect {|day| day.downcase}
42
- @@short_days_of_week.index(weekday.downcase)
43
- end
44
-
45
- def years_since(date)
46
- years_diff = year - date.year
47
- if month < date.month || (month == date.month && day < date.day)
48
- years_diff -= 1
49
- end
50
- years_diff
51
- end
52
-
53
- def make_datetime(hour = 0, min = 0, sec = 0)
54
- DateTime.new(year, month, mday, hour, min, sec)
55
- end
56
-
57
- def add_months(months, new_day = nil)
58
- total_month = month + months
59
- new_month = total_month % 12
60
- new_month = 12 if new_month == 0
61
- new_year = year + ((total_month - 1) / 12)
62
- calc_day = [mday, Date.days_in_month(new_year, new_month)].min
63
- Date.new(new_year, new_month, new_day || calc_day)
64
- end
65
-
66
- def add_years(years)
67
- new_year = year + years
68
- calc_day = [mday, Date.days_in_month(new_year, month)].min
69
- Date.new(new_year, month, calc_day)
70
- end
71
- end
72
-
73
- class DateTime
74
- DOHRUBY_SECONDS_IN_DAY = (24 * 60 * 60).freeze
75
-
76
- def self.seconds_to_days(seconds)
77
- seconds.to_f / DOHRUBY_SECONDS_IN_DAY.to_f
78
- end
79
-
80
- def self.zow
81
- obj = now
82
- new(obj.year, obj.month, obj.mday, obj.hour, obj.min, obj.sec)
83
- end
84
-
85
- def inspect
86
- strftime('%F %X')
87
- end
88
-
89
- def date_only
90
- Date.new(year, month, mday)
91
- end
92
-
93
- def add_seconds(seconds)
94
- self + Rational(seconds, DOHRUBY_SECONDS_IN_DAY)
95
- end
96
-
97
- def sub_seconds(seconds)
98
- add_seconds(-seconds)
99
- end
100
-
101
- # subtract another DateTime object, return difference in seconds
102
- def sub_dt(other)
103
- ((self - other) * DOHRUBY_SECONDS_IN_DAY).to_i
104
- end
105
-
106
- def make_datetime
107
- self
17
+ def make_datetime(hour = 0, minute = 0, second = 0, offset = 0)
18
+ DateTime.new(year, month, mday, hour, minute, second, offset)
108
19
  end
109
20
  end
@@ -0,0 +1,52 @@
1
+ require 'date'
2
+ require 'time'
3
+
4
+ # these are sets of methods to make DateTime & Time objects more interchangeable
5
+ # they are not comprehensive, nor exact - for example, this DateTime utc method does not modify the receiver, whereas the Time utc method does
6
+ # they simply provide good enough compatibility for what I've encountered so far
7
+ module MakeDateTimeLikeTime
8
+ def utc
9
+ new_offset
10
+ end
11
+ end
12
+
13
+ module MakeTimeLikeDateTime
14
+ def next_second(n = 1)
15
+ self + n
16
+ end
17
+
18
+ def prev_second(n = 1)
19
+ self + n
20
+ end
21
+ end
22
+
23
+ class DateTime
24
+ include MakeDateTimeLikeTime
25
+
26
+ DOHRUBY_SECONDS_IN_DAY = (24 * 60 * 60).freeze
27
+
28
+ def self.seconds_to_days(seconds)
29
+ seconds.to_f / DOHRUBY_SECONDS_IN_DAY.to_f
30
+ end
31
+
32
+ def inspect
33
+ strftime('%F %X')
34
+ end
35
+
36
+ def next_second(n = 1)
37
+ self + (SECONDS_IN_DAY * n)
38
+ end
39
+
40
+ def prev_second(n = 1)
41
+ next_second(-n)
42
+ end
43
+
44
+ # subtract another DateTime object, return difference in seconds
45
+ def sub_dt(other)
46
+ ((self - other) * DOHRUBY_SECONDS_IN_DAY).to_i
47
+ end
48
+ end
49
+
50
+ class Time
51
+ include MakeTimeLikeDateTime
52
+ end
@@ -1,4 +1,4 @@
1
- require 'doh/core_ext/date'
1
+ require 'doh/core_ext/datewithtime'
2
2
 
3
3
  module Doh
4
4
 
@@ -6,10 +6,10 @@ module Doh
6
6
 
7
7
  def self.current_date(dflt = Date.today)
8
8
  return dflt if @@current_date_objs.empty?
9
- @@current_date_objs.last.date_only
9
+ @@current_date_objs.last.to_date
10
10
  end
11
11
 
12
- def self.current_datetime(dflt = DateTime.zow)
12
+ def self.current_datetime(dflt = DateTime.now.utc)
13
13
  return dflt if @@current_date_objs.empty?
14
14
  cdo = @@current_date_objs.last
15
15
  return cdo if cdo.respond_to?(:hour)
@@ -12,6 +12,12 @@ class DateTime
12
12
  end
13
13
  end
14
14
 
15
+ class Time
16
+ def to_display
17
+ strftime('%m/%d/%Y %I:%M%P')
18
+ end
19
+ end
20
+
15
21
  class Date
16
22
  def to_display
17
23
  strftime('%m/%d/%Y')
data/test/test_date.rb ADDED
@@ -0,0 +1,14 @@
1
+ require 'minitest/autorun'
2
+ require_relative '../lib/doh/core_ext/date'
3
+
4
+ module Doh
5
+
6
+ class Test_core_ext_date < MiniTest::Unit::TestCase
7
+ def test_weekday
8
+ Date.new(2007, 1, 15).upto(Date.new(2007, 1, 19)) { |date| assert(date.weekday?) }
9
+ assert(!Date.new(2007, 1, 13).weekday?)
10
+ assert(!Date.new(2007, 1, 14).weekday?)
11
+ end
12
+ end
13
+
14
+ end
@@ -0,0 +1,13 @@
1
+ require 'minitest/autorun'
2
+ require_relative '../lib/doh/core_ext/datewithtime'
3
+
4
+ module Doh
5
+
6
+ class Test_core_ext_datewithtime < MiniTest::Unit::TestCase
7
+ def test_next_second
8
+ assert_equal(DateTime.new(2009, 2, 10, 15, 30, 3), DateTime.new(2009, 2, 10, 15, 30, 2).next_second(1))
9
+ assert_equal(Time.new(2009, 2, 10, 15, 30, 3), Time.new(2009, 2, 10, 15, 30, 2).next_second(1))
10
+ end
11
+ end
12
+
13
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dohutil
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-02-09 00:00:00.000000000Z
13
+ date: 2012-02-23 00:00:00.000000000Z
14
14
  dependencies: []
15
15
  description: Tiny utilities, packaged together so they don't each have their own gem.
16
16
  email:
@@ -20,17 +20,17 @@ extensions: []
20
20
  extra_rdoc_files:
21
21
  - MIT-LICENSE
22
22
  files:
23
- - lib/doh/app/common.rb
24
- - lib/doh/app/pwd.rb
23
+ - lib/doh/app/init_from_pwd.rb
24
+ - lib/doh/app/util.rb
25
25
  - lib/doh/array_to_hash.rb
26
26
  - lib/doh/class_basename.rb
27
27
  - lib/doh/config.rb
28
28
  - lib/doh/core_ext/bigdecimal.rb
29
29
  - lib/doh/core_ext/class/force_deep_copy.rb
30
30
  - lib/doh/core_ext/date.rb
31
+ - lib/doh/core_ext/datewithtime.rb
31
32
  - lib/doh/core_ext/dir.rb
32
33
  - lib/doh/core_ext/hash.rb
33
- - lib/doh/core_ext/kernel.rb
34
34
  - lib/doh/core_ext/string.rb
35
35
  - lib/doh/current_date.rb
36
36
  - lib/doh/env.rb
@@ -40,6 +40,8 @@ files:
40
40
  - lib/doh/options.rb
41
41
  - lib/doh/root.rb
42
42
  - lib/doh/to_display.rb
43
+ - test/test_date.rb
44
+ - test/test_datewithtime.rb
43
45
  - MIT-LICENSE
44
46
  homepage: https://github.com/atpsoft/dohutil
45
47
  licenses:
@@ -66,4 +68,7 @@ rubygems_version: 1.8.15
66
68
  signing_key:
67
69
  specification_version: 3
68
70
  summary: assorted tiny utilities
69
- test_files: []
71
+ test_files:
72
+ - test/test_date.rb
73
+ - test/test_datewithtime.rb
74
+ has_rdoc:
@@ -1,10 +0,0 @@
1
- require 'doh/root'
2
- require 'doh/core_ext/kernel'
3
-
4
- module Doh
5
-
6
- def self.require_dohapp_config
7
- require_optional(File::join(Doh::root, 'config/dohapp'))
8
- end
9
-
10
- end
data/lib/doh/app/pwd.rb DELETED
@@ -1,4 +0,0 @@
1
- require 'doh/app/common'
2
-
3
- Doh::find_root_from_pwd
4
- Doh::require_dohapp_config
@@ -1,8 +0,0 @@
1
- module Kernel
2
-
3
- def require_optional(string)
4
- require(string)
5
- rescue LoadError => ignore
6
- end
7
-
8
- end