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