timing 0.2.7 → 0.2.9

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
  SHA256:
3
- metadata.gz: 666ee7049eb29d589431eec63fbf54a6e79a75f4ff418e5a3fa13c54cea11ae5
4
- data.tar.gz: 6e32f64a0c6568637090b038f9d0f30ba936925ede0bb6b18c1168c429e38f14
3
+ metadata.gz: 7957fd2301422e73b76369d0c7f077a70b39fe3c6ef4a040a8defdbc09902d96
4
+ data.tar.gz: af73b67fe136ffc4e9af07025f12cb44276101ad72ff452ece46c1515acce8bd
5
5
  SHA512:
6
- metadata.gz: 0cd864c3df88c5bf92863df0becba24a1dd144797f317d529b2f10cdc880ab4fda53a64f0f664a2c4caf5f62c24419128edefacb75f255c0b2664cbaae26c75a
7
- data.tar.gz: 20fb404748aa83b1bdd47e0d6c8e5565336d7c0007acaf885095a898a24208e333f6de3b348a68f15fc812e1a8189f3ab68b5da81fe7feded8eafc3681bc1fac
6
+ metadata.gz: 8d4dff8a47e6a7c87e0c7dc73dc3822fa870c03f7d6ed0f03f7b1c7ee6c12cf02e3208d4987060848b985bb0df28cff4d939698910f48284a578aa2bfa540cf1
7
+ data.tar.gz: b32a451bf8881941c55199574e7ee8469f952ed935e5c8879a386e4d0d76b696d6379b532cda8c211fc75a3a21966b1e29990707bfd15a7ecd5c3251deb0f351
@@ -0,0 +1,26 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [ '**' ]
6
+ pull_request:
7
+ branches: [ '**' ]
8
+
9
+ jobs:
10
+ test:
11
+
12
+ name: Tests
13
+ runs-on: ubuntu-22.04
14
+ strategy:
15
+ matrix:
16
+ ruby-version: ['2.3', '2.4', '2.5', '2.6', '2.7', '3.0', 'jruby-9.2.9.0']
17
+
18
+ steps:
19
+ - uses: actions/checkout@v3
20
+ - name: Set up Ruby
21
+ uses: ruby/setup-ruby@v1
22
+ with:
23
+ ruby-version: ${{ matrix.ruby-version }}
24
+ bundler-cache: true
25
+ - name: Run tests
26
+ run: bundle exec rake
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Timing
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/timing.svg)](https://rubygems.org/gems/timing)
4
- [![Build Status](https://travis-ci.org/gabynaiman/timing.svg?branch=master)](https://travis-ci.org/gabynaiman/timing)
4
+ [![CI](https://github.com/gabynaiman/timing/actions/workflows/ci.yml/badge.svg)](https://github.com/gabynaiman/timing/actions/workflows/ci.yml)
5
5
  [![Coverage Status](https://coveralls.io/repos/github/gabynaiman/timing/badge.svg?branch=master)](https://coveralls.io/github/gabynaiman/timing?branch=master)
6
6
  [![Code Climate](https://codeclimate.com/github/gabynaiman/timing.svg)](https://codeclimate.com/github/gabynaiman/timing)
7
7
 
@@ -812,6 +812,9 @@ module Timing
812
812
  module Timestamp0
813
813
  end
814
814
 
815
+ module Timestamp1
816
+ end
817
+
815
818
  def _nt_timestamp
816
819
  start_index = index
817
820
  if node_cache[:timestamp].has_key?(index)
@@ -1047,6 +1050,53 @@ module Timing
1047
1050
  r21 = instantiate_node(SyntaxNode,input, i21...index, s21)
1048
1051
  end
1049
1052
  s0 << r21
1053
+ if r21
1054
+ i24, s24 = index, []
1055
+ if has_terminal?('.', false, index)
1056
+ r25 = instantiate_node(SyntaxNode,input, index...(index + 1))
1057
+ @index += 1
1058
+ else
1059
+ terminal_parse_failure('.')
1060
+ r25 = nil
1061
+ end
1062
+ s24 << r25
1063
+ if r25
1064
+ s26, i26 = [], index
1065
+ loop do
1066
+ if has_terminal?('\G[\\d]', true, index)
1067
+ r27 = true
1068
+ @index += 1
1069
+ else
1070
+ r27 = nil
1071
+ end
1072
+ if r27
1073
+ s26 << r27
1074
+ else
1075
+ break
1076
+ end
1077
+ end
1078
+ if s26.empty?
1079
+ @index = i26
1080
+ r26 = nil
1081
+ else
1082
+ r26 = instantiate_node(SyntaxNode,input, i26...index, s26)
1083
+ end
1084
+ s24 << r26
1085
+ end
1086
+ if s24.last
1087
+ r24 = instantiate_node(SyntaxNode,input, i24...index, s24)
1088
+ r24.extend(Timestamp0)
1089
+ else
1090
+ @index = i24
1091
+ r24 = nil
1092
+ end
1093
+ if r24
1094
+ r23 = r24
1095
+ else
1096
+ r23 = instantiate_node(SyntaxNode,input, index...index)
1097
+ end
1098
+ s0 << r23
1099
+ end
1050
1100
  end
1051
1101
  end
1052
1102
  end
@@ -1061,7 +1111,7 @@ module Timing
1061
1111
  end
1062
1112
  if s0.last
1063
1113
  r0 = instantiate_node(Timestamp,input, i0...index, s0)
1064
- r0.extend(Timestamp0)
1114
+ r0.extend(Timestamp1)
1065
1115
  else
1066
1116
  @index = i0
1067
1117
  r0 = nil
@@ -2563,12 +2613,30 @@ module Timing
2563
2613
  return cached
2564
2614
  end
2565
2615
 
2616
+ i0 = index
2566
2617
  if has_terminal?('utc', false, index)
2567
- r0 = instantiate_node(ZoneName,input, index...(index + 3))
2618
+ r1 = instantiate_node(ZoneName,input, index...(index + 3))
2568
2619
  @index += 3
2569
2620
  else
2570
2621
  terminal_parse_failure('utc')
2571
- r0 = nil
2622
+ r1 = nil
2623
+ end
2624
+ if r1
2625
+ r0 = r1
2626
+ else
2627
+ if has_terminal?('z', false, index)
2628
+ r2 = instantiate_node(ZoneName,input, index...(index + 1))
2629
+ @index += 1
2630
+ else
2631
+ terminal_parse_failure('z')
2632
+ r2 = nil
2633
+ end
2634
+ if r2
2635
+ r0 = r2
2636
+ else
2637
+ @index = i0
2638
+ r0 = nil
2639
+ end
2572
2640
  end
2573
2641
 
2574
2642
  node_cache[:zone_name][start_index] = r0
@@ -19,9 +19,9 @@ module Timing
19
19
  end
20
20
 
21
21
  rule date_moment
22
- named_moment /
23
- last_next_day_name /
24
- day_month_name_year /
22
+ named_moment /
23
+ last_next_day_name /
24
+ day_month_name_year /
25
25
  year_month_day /
26
26
  beginning_end_interval
27
27
  end
@@ -59,7 +59,7 @@ module Timing
59
59
  end
60
60
 
61
61
  rule timestamp
62
- [\d]4..4 '-' [\d]2..2 '-' [\d]2..2 space* 't'? space* [\d]2..2 ':' [\d]2..2 ':' [\d]2..2 <Timestamp>
62
+ [\d]4..4 '-' [\d]2..2 '-' [\d]2..2 space* 't'? space* [\d]2..2 ':' [\d]2..2 ':' [\d]2..2 ('.' [\d]+)? <Timestamp>
63
63
  end
64
64
 
65
65
  rule now
@@ -115,12 +115,12 @@ module Timing
115
115
  end
116
116
 
117
117
  rule interval
118
- second_interval /
119
- minute_interval /
120
- hour_interval /
121
- day_interval /
122
- week_interval /
123
- month_interval /
118
+ second_interval /
119
+ minute_interval /
120
+ hour_interval /
121
+ day_interval /
122
+ week_interval /
123
+ month_interval /
124
124
  year_interval
125
125
  end
126
126
 
@@ -215,7 +215,8 @@ module Timing
215
215
  end
216
216
 
217
217
  rule zone_name
218
- 'utc' <ZoneName>
218
+ 'utc' <ZoneName> /
219
+ 'z' <ZoneName>
219
220
  end
220
221
 
221
222
  rule hour_minute_second
@@ -310,8 +310,9 @@ module Timing
310
310
  end
311
311
 
312
312
  class ZoneName < Treetop::Runtime::SyntaxNode
313
+ UTC_VALUES = ['utc', 'z']
313
314
  def value
314
- if text_value.downcase == 'utc'
315
+ if UTC_VALUES.include? text_value.downcase
315
316
  '+0000'
316
317
  end
317
318
  end
@@ -9,7 +9,7 @@ module Timing
9
9
  def_delegators :time_with_offset, :year, :month, :day, :hour, :min, :sec, :wday, :yday, :sunday?, :monday?, :tuesday?, :wednesday?, :thursday?, :friday?, :saturday?
10
10
 
11
11
  attr_reader :zone_offset
12
-
12
+
13
13
  def initialize(time, zone_offset=nil)
14
14
  @time = time
15
15
  @zone_offset = build_zone_offset(zone_offset || time.utc_offset)
@@ -69,8 +69,9 @@ module Timing
69
69
  time_with_offset.strftime sanitized_format
70
70
  end
71
71
 
72
- def iso8601
73
- strftime "%FT%T#{zone_offset.iso8601}"
72
+ def iso8601(fraction_digits=0)
73
+ decimals = fraction_digits > 0 ? ".%#{fraction_digits}N" : ''
74
+ strftime "%FT%T#{decimals}#{zone_offset.iso8601}"
74
75
  end
75
76
 
76
77
  def as_json(*args)
@@ -1,3 +1,3 @@
1
1
  module Timing
2
- VERSION = '0.2.7'
2
+ VERSION = '0.2.9'
3
3
  end
data/timing.gemspec CHANGED
@@ -22,7 +22,6 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency 'treetop', '~> 1.4.0'
23
23
  spec.add_dependency 'transparent_proxy', '~> 0.0', '>= 0.0.5'
24
24
 
25
- spec.add_development_dependency 'bundler', '~> 1.12'
26
25
  spec.add_development_dependency 'rake', '~> 11.0'
27
26
  spec.add_development_dependency 'minitest', '~> 5.0', '< 5.11'
28
27
  spec.add_development_dependency 'minitest-colorin', '~> 0.1'
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.2.7
4
+ version: 0.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gabriel Naiman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-18 00:00:00.000000000 Z
11
+ date: 2025-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop
@@ -44,20 +44,6 @@ dependencies:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: 0.0.5
47
- - !ruby/object:Gem::Dependency
48
- name: bundler
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '1.12'
54
- type: :development
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '1.12'
61
47
  - !ruby/object:Gem::Dependency
62
48
  name: rake
63
49
  requirement: !ruby/object:Gem::Requirement
@@ -170,10 +156,10 @@ extensions: []
170
156
  extra_rdoc_files: []
171
157
  files:
172
158
  - ".coveralls.yml"
159
+ - ".github/workflows/ci.yml"
173
160
  - ".gitignore"
174
161
  - ".ruby-gemset"
175
162
  - ".ruby-version"
176
- - ".travis.yml"
177
163
  - Gemfile
178
164
  - LICENSE.txt
179
165
  - README.md
@@ -208,7 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
208
194
  - !ruby/object:Gem::Version
209
195
  version: '0'
210
196
  requirements: []
211
- rubygems_version: 3.0.6
197
+ rubygems_version: 3.0.8
212
198
  signing_key:
213
199
  specification_version: 4
214
200
  summary: Time utils
data/.travis.yml DELETED
@@ -1,25 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 1.9.3
5
- - 2.0
6
- - 2.1
7
- - 2.2
8
- - 2.3.0
9
- - 2.4.0
10
- - 2.5.0
11
- - 2.6.0
12
- - jruby-1.7.25
13
- - jruby-9.1.7.0
14
- - ruby-head
15
- - jruby-head
16
-
17
- matrix:
18
- fast_finish: true
19
- allow_failures:
20
- - rvm: ruby-head
21
- - rvm: jruby-head
22
-
23
- before_install:
24
- - rvm all-gemsets do gem uninstall bundler -ax || true
25
- - gem install bundler -v "< 2"