timing 0.1.1 → 0.1.2

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.
@@ -2,7 +2,12 @@ module Timing
2
2
  grammar NaturalTimeLanguage
3
3
 
4
4
  rule expression
5
- space* moment:moment space* zone_offset:zone_offset? space* <Expression>
5
+ space* moment:moment space* zone_info:zone_info? space* <Expression>
6
+ end
7
+
8
+ rule zone_info
9
+ zone_offset /
10
+ zone_name
6
11
  end
7
12
 
8
13
  rule moment
@@ -209,6 +214,10 @@ module Timing
209
214
  [+-] [\d]2..2 ':'? [\d]2..2 <ZoneOffset>
210
215
  end
211
216
 
217
+ rule zone_name
218
+ 'utc' <ZoneName>
219
+ end
220
+
212
221
  rule hour_minute_second
213
222
  [\d]2..2 ':' [\d]2..2 (':' [\d]2..2)? <HourMinuteSecond> /
214
223
  'beginning' <HourMinuteSecond> /
@@ -25,7 +25,7 @@ module Timing
25
25
 
26
26
  class Expression < Treetop::Runtime::SyntaxNode
27
27
  def evaluate
28
- moment.evaluate zone_offset.empty? ? nil : zone_offset.value
28
+ moment.evaluate zone_info.empty? ? nil : zone_info.value
29
29
  end
30
30
  end
31
31
 
@@ -105,17 +105,19 @@ module Timing
105
105
 
106
106
  class YearMonthDay < Treetop::Runtime::SyntaxNode
107
107
  def evaluate(zone_offset)
108
+ now = TimeInZone.now zone_offset
108
109
  yyyy = year.value
109
110
  mm = month.value.to_s.rjust(2, '0')
110
111
  dd = day.value.to_s.rjust(2, '0')
111
- TimeInZone.parse "#{yyyy}-#{mm}-#{dd} 00:00:00 #{zone_offset}"
112
+ TimeInZone.parse "#{yyyy}-#{mm}-#{dd} 00:00:00 #{now.zone_offset}"
112
113
  end
113
114
  end
114
115
 
115
116
  class MomentAtTime < Treetop::Runtime::SyntaxNode
116
117
  def evaluate(zone_offset)
118
+ now = TimeInZone.now zone_offset
117
119
  date = moment.evaluate zone_offset
118
- TimeInZone.parse "#{date.strftime('%F')} #{time.value} #{date.zone_offset}"
120
+ TimeInZone.parse "#{date.strftime('%F')} #{time.value} #{now.zone_offset}"
119
121
  end
120
122
  end
121
123
 
@@ -132,7 +134,8 @@ module Timing
132
134
 
133
135
  class Timestamp < Treetop::Runtime::SyntaxNode
134
136
  def evaluate(zone_offset)
135
- TimeInZone.parse "#{text_value}#{zone_offset}"
137
+ now = TimeInZone.now zone_offset
138
+ TimeInZone.parse "#{text_value}#{now.zone_offset}"
136
139
  end
137
140
  end
138
141
 
@@ -306,6 +309,14 @@ module Timing
306
309
  end
307
310
  end
308
311
 
312
+ class ZoneName < Treetop::Runtime::SyntaxNode
313
+ def value
314
+ if text_value.downcase == 'utc'
315
+ '+0000'
316
+ end
317
+ end
318
+ end
319
+
309
320
  class HourMinuteSecond < Treetop::Runtime::SyntaxNode
310
321
  def value
311
322
  if text_value.downcase == 'beginning'
@@ -1,3 +1,3 @@
1
1
  module Timing
2
- VERSION = '0.1.1'
2
+ VERSION = '0.1.2'
3
3
  end
data/timing.gemspec CHANGED
@@ -27,7 +27,7 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency 'minitest', '~> 5.0'
28
28
  spec.add_development_dependency 'minitest-colorin', '~> 0.1'
29
29
  spec.add_development_dependency 'minitest-line', '~> 0.6'
30
- spec.add_development_dependency 'simplecov', '~> 0.12'
30
+ spec.add_development_dependency 'simplecov', '~> 0.16'
31
31
  spec.add_development_dependency 'coveralls', '~> 0.8'
32
32
  spec.add_development_dependency 'pry-nav', '~> 0.2'
33
33
 
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.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Naiman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-23 00:00:00.000000000 Z
11
+ date: 2018-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop
@@ -114,14 +114,14 @@ dependencies:
114
114
  requirements:
115
115
  - - ~>
116
116
  - !ruby/object:Gem::Version
117
- version: '0.12'
117
+ version: '0.16'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ~>
123
123
  - !ruby/object:Gem::Version
124
- version: '0.12'
124
+ version: '0.16'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: coveralls
127
127
  requirement: !ruby/object:Gem::Requirement