timing 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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