timing 0.0.5 → 0.0.6

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f09ecefbe550d4d34b1a2fcca1666964a8baede5
4
- data.tar.gz: 7a606b35392241c852fa78d02a65de8e7f586121
3
+ metadata.gz: e9d3f014400da6b44b2afaf3d8f15af729863b24
4
+ data.tar.gz: a735431bb16759291c7eb06e9ae366365f4435d1
5
5
  SHA512:
6
- metadata.gz: 42505c6137cc10badb7e7e306fa1b3bef6f15fe6bc29e32bb4bbc8d0e6da29ed052afc1c141c6302ccafeaa88f4887f5d3f0d71bed4c0192c5c67d05587cffb9
7
- data.tar.gz: 61c61a040c4278690505ae01dda2f003f3b059fd162e564a098d11da1a9455b7f86cf3866db5454afe36a1d8457c57d9b6b81612a0f8a194cccb62ee7dbaa71a
6
+ metadata.gz: f67d4efec377bf8fc2f667ee031238f530bc82a1093068a23ce4f4982224b784f9b7c9dbcb9c3bccdda3395d2b99f8067f9b560794501485136ee47ac5f65bc9
7
+ data.tar.gz: f2ac4a9ba491b548cdb5ea4c8a6694a3ffead179d623849e9836ec9580850675eeb10b6d11240509381950fede3c71754dc3f35b1b9be631336f09b85e711208
data/.travis.yml CHANGED
@@ -4,4 +4,7 @@ rvm:
4
4
  - 2.0
5
5
  - 2.1
6
6
  - 2.2
7
- - jruby
7
+ - 2.3.0
8
+ - jruby
9
+ before_install:
10
+ - gem install bundler
data/README.md CHANGED
@@ -26,8 +26,125 @@ Or install it yourself as:
26
26
 
27
27
  ## Usage
28
28
 
29
- TODO: Write usage instructions here
29
+ #### TimeInZone
30
30
 
31
+ Acts like Time with specific utc offset.
32
+
33
+ ```ruby
34
+ Time.now # => 2015-10-19 22:10:47 -0300
35
+ Timing::TimeInZone.now # => 2015-10-19 22:10:47 -0300
36
+ Timing::TimeInZone.now '-0400' # => 2015-10-19 21:10:47 -0400
37
+
38
+ Timing::TimeInZone.at 1445303855 # => 2015-10-19 22:17:35 -0300
39
+ Timing::TimeInZone.at 1445303855, '+0200' # => 2015-10-20 03:17:35 +0200
40
+
41
+ Timing::TimeInZone.now # => 2015-10-19 22:22:52 -0300
42
+ Timing::TimeInZone.now.to_zone('-0100') # => 2015-10-20 00:22:52 -0100
43
+
44
+ time = Timing::TimeInZone.now '+0200' # => 2015-10-20 03:36:14 +0200
45
+ time.zone_offset = '-0100'
46
+ time # => 2015-10-20 00:36:14 -0100
47
+
48
+ time = Timing::TimeInZone.now '-0700' # => 2015-10-19 18:29:29 -0700
49
+ time + 3600 # => 2015-10-19 19:29:29 -0700
50
+ Timing::TimeInZone.now - time # => 250.85015296936035
51
+ time.to_time # => 2015-10-19 22:29:29 -0300
52
+ ```
53
+
54
+
55
+ #### Interval
56
+
57
+ Seconds wrapper with helper methods.
58
+
59
+ ```ruby
60
+ Timing::Interval.new 10 # => 10s (10.0)
61
+
62
+ Timing::Interval.seconds(20) # => 20s (20.0)
63
+ Timing::Interval.minutes(15) # => 15m (900.0)
64
+ Timing::Interval.hours(7) # => 7h (25200.0)
65
+ Timing::Interval.days(5) # => 5d (432000.0)
66
+ Timing::Interval.weeks(2) # => 2w (1209600.0)
67
+
68
+ Timing::Interval.parse('20s') # => 20s (20.0)
69
+ Timing::Interval.parse('15m') # => 15m (900.0)
70
+ Timing::Interval.parse('7h') # => 7h (25200.0)
71
+ Timing::Interval.parse('5d') # => 5d (432000.0)
72
+ Timing::Interval.parse('2w') # => 2w (1209600.0)
73
+
74
+ interval = Timing::Interval.weeks(1)
75
+ interval.to_seconds # => 604800.0
76
+ interval.to_minutes # => 10080.0
77
+ interval.to_hours # => 168.0
78
+ interval.to_days # => 7.0
79
+ interval.to_weeks # => 1.0
80
+ ```
81
+
82
+
83
+ #### NaturalTimeLanguage
84
+
85
+ Natural language to specify times.
86
+
87
+ ```ruby
88
+ Timing::NaturalTimeLanguage.parse 'now'
89
+ ```
90
+
91
+ Named moments
92
+ - now
93
+ - Now -0500
94
+ - today
95
+ - today +0000
96
+ - Today -0600
97
+ - yesterday -0400
98
+ - tomorrow -0300
99
+
100
+ Last/Next day name
101
+ - last Monday +0200
102
+ - last fri +0100
103
+ - next tuesday +0000
104
+ - next sat -0100
105
+
106
+ Date (at 00:00:00)
107
+ - 6 April
108
+ - 14 Jul 2010 +0400
109
+ - 2015-09-03
110
+ - 2015-06-20 -0800
111
+
112
+ Beginning/End of interval
113
+ - Beginning of month
114
+ - end of year +0700
115
+ - beginning of week
116
+ - End of Day -0100
117
+ - end of hour +0400
118
+
119
+ Time ago (now - interval)
120
+ - 1 minute ago
121
+ - 3 hours ago -0500
122
+ - 5 days ago -0100
123
+ - 4 weeks ago +0100
124
+ - 10 months ago +0330
125
+ - 7 years ago -0700
126
+
127
+ Date at time
128
+ - today at 15:40
129
+ - last sunday at 08:43:21 -0300
130
+ - yesterday at beginning
131
+ - next friday at beginning -0100
132
+ - beginning of year at end
133
+ - 14 May 2011 at end -0400
134
+ - 25 Nov at 13:25
135
+ - 2001-07-14 at 18:41
136
+ - 2012-08-17 14:35:20
137
+ - 1980-04-21T08:15:03-0500
138
+
139
+ Before/After moment
140
+ - 15 minutes from now
141
+ - 3 days before yesterday
142
+ - 1 month from today
143
+ - 1 week from last monday at 08:30 -0400
144
+ - 5 days before next friday at end
145
+ - 1 month before beginning of month
146
+ - 1 year before 9 Sep +0300
147
+ - 2 years from 2001-05-21T12:30:40 -0500
31
148
 
32
149
  ## Contributing
33
150
 
data/Rakefile CHANGED
@@ -5,6 +5,7 @@ Rake::TestTask.new(:spec) do |t|
5
5
  t.libs << 'spec'
6
6
  t.pattern = 'spec/**/*_spec.rb'
7
7
  t.verbose = false
8
+ t.warning = false
8
9
  end
9
10
 
10
11
  task default: :spec
@@ -58,7 +58,12 @@ module Timing
58
58
  alias_method :inspect, :to_s
59
59
 
60
60
  def strftime(format)
61
- time_with_offset.strftime format.gsub('%Z', '').gsub('%z', zone_offset.to_s)
61
+ sanitized_format = format.gsub('%Z', '')
62
+ .gsub('%z', zone_offset.to_s)
63
+ .gsub('%:z', zone_offset.to_s(':'))
64
+ .gsub('%::z', "#{zone_offset.to_s(':')}:00")
65
+
66
+ time_with_offset.strftime sanitized_format
62
67
  end
63
68
 
64
69
  def iso8601
@@ -1,3 +1,3 @@
1
1
  module Timing
2
- VERSION = '0.0.5'
2
+ VERSION = '0.0.6'
3
3
  end
@@ -8,8 +8,8 @@ module Timing
8
8
  super
9
9
  end
10
10
 
11
- def to_s
12
- "#{sign}#{hour.to_s.rjust(2, '0')}#{minute.to_s.rjust(2, '0')}"
11
+ def to_s(separator=nil)
12
+ "#{sign}#{hour.to_s.rjust(2, '0')}#{separator}#{minute.to_s.rjust(2, '0')}"
13
13
  end
14
14
 
15
15
  def iso8601
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Naiman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-16 00:00:00.000000000 Z
11
+ date: 2016-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop
@@ -168,7 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
168
  version: '0'
169
169
  requirements: []
170
170
  rubyforge_project:
171
- rubygems_version: 2.4.7
171
+ rubygems_version: 2.4.8
172
172
  signing_key:
173
173
  specification_version: 4
174
174
  summary: Time utils