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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +13 -1
- data/Rakefile +2 -1
- data/lib/timing/natural_time_language.rb +550 -375
- data/lib/timing/natural_time_language.treetop +10 -1
- data/lib/timing/natural_time_language_interpreters.rb +15 -4
- data/lib/timing/version.rb +1 -1
- data/timing.gemspec +1 -1
- metadata +4 -4
@@ -2,7 +2,12 @@ module Timing
|
|
2
2
|
grammar NaturalTimeLanguage
|
3
3
|
|
4
4
|
rule expression
|
5
|
-
space* moment:moment space*
|
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
|
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} #{
|
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.
|
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'
|
data/lib/timing/version.rb
CHANGED
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.
|
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.
|
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:
|
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.
|
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.
|
124
|
+
version: '0.16'
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: coveralls
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|