chrono 0.4.0 → 0.6.0

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
- SHA1:
3
- metadata.gz: 0d252cd6e02cae1bbb12c6a310402e15de067158
4
- data.tar.gz: a8f41a68a6e85e74a05edc049cab7593f51e89e0
2
+ SHA256:
3
+ metadata.gz: 946e2892180dd9ae752e3883cd0d85de26697b48303dc46d6ef9083958faccaa
4
+ data.tar.gz: b7a7dae085130625666abe7ebcdf40e50fa5ebe040b1cea101410458fbd165ae
5
5
  SHA512:
6
- metadata.gz: 6e7cf6afc4ad77ade83fde6f5fea043dcfaa91167905cd2165e872840264f57395e93dbe22e11003568537b9998e90f42d0f066741b036b6dfac0fe57ce17f04
7
- data.tar.gz: 29f662fa1ea7aa28d9e613e1bc73c80b6869662e003e52f92f5250e4c3da5c574b59d0829c4d16f478054db219f44723dcf405083d8c51435c31f811d6cec050
6
+ metadata.gz: 45245d747c9904409700776623301c7f2ab6b4c26f93a078f7b4d84221fa6549d441a51a939ead6f0ded5b979617b8c48f21027a594769f75faecd2d17190458
7
+ data.tar.gz: b148ea5a87ff74823c69d642f9b8e5af0630b2a0720ac92abf51a49b6856347b45fa79381d33acfe1404d8c5ba39024c230394731285923ebf898f06ed367ca5
@@ -0,0 +1,22 @@
1
+ name: test
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - master
8
+
9
+ jobs:
10
+ build:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby:
15
+ - 2.7.2
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+ - uses: ruby/setup-ruby@v1
19
+ with:
20
+ ruby-version: ${{ matrix.ruby }}
21
+ bundler-cache: true
22
+ - run: bundle exec rake
data/CHANGELOG.md CHANGED
@@ -1,31 +1,83 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+
5
+ ## 0.6.0
6
+
7
+ ### Added
8
+
9
+ - Add last-day-of-month syntax (thx @itkrt2y).
10
+
11
+ ## 0.5.0
12
+
13
+ ### Added
14
+
15
+ - Add support for activesupport 7 (thx @unasuke).
16
+
17
+ ### Changed
18
+
19
+ - Drop support of activesupport below 5.2.
20
+
1
21
  ## 0.4.0
2
22
 
3
- - Raise ArgumentError on inifinite loop detected (thx @nurse)
23
+ ### Changed
24
+
25
+ - Raise ArgumentError on inifinite loop detected (thx @nurse).
4
26
 
5
27
  ## 0.3.0
6
- - Fix bug on day and wday specs
28
+
29
+ ### Fixed
30
+
31
+ - Fix bug on day and wday specs.
7
32
 
8
33
  ## 0.2.0
9
- - Add more strict validations
10
- - Support some alias field names
34
+
35
+ ### Added
36
+
37
+ - Support some alias field names.
38
+
39
+ ### Changed
40
+
41
+ - Add more strict validations.
11
42
 
12
43
  ## 0.1.0
13
- - Raise errors on invalid fields (thx @eagletmt)
44
+
45
+ ### Changed
46
+
47
+ - Raise errors on invalid fields (thx @eagletmt).
14
48
 
15
49
  ## 0.0.6
16
- - Support ActiveSupport 3 and 4
50
+
51
+ ### Changed
52
+
53
+ - Support ActiveSupport 3 and 4.
17
54
 
18
55
  ## 0.0.5
19
- - Fix missing version dependency on ActiveSupport 4
56
+
57
+ ### Changed
58
+
59
+ - Fix missing version dependency on ActiveSupport 4.
20
60
 
21
61
  ## 0.0.4
22
- - Add extra 1sec sleep to adjust to exact minute
62
+
63
+ ### Changed
64
+
65
+ - Add extra 1sec sleep to adjust to exact minute.
23
66
 
24
67
  ## 0.0.3
25
- - Schedule more accurate second
68
+
69
+ ### Changed
70
+
71
+ - Schedule more accurate second.
26
72
 
27
73
  ## 0.0.2
28
- - Chrono::Trigger was added
74
+
75
+ ### Added
76
+
77
+ - Chrono::Trigger was added.
29
78
 
30
79
  ## 0.0.1
31
- - Chrono::Iterator was added
80
+
81
+ ### Added
82
+
83
+ - Chrono::Iterator was added.
data/README.md CHANGED
@@ -1,4 +1,7 @@
1
- # Chrono [![Build Status](https://travis-ci.org/r7kamura/chrono.png)](https://travis-ci.org/r7kamura/chrono) [![Code Climate](https://codeclimate.com/github/r7kamura/chrono.png)](https://codeclimate.com/github/r7kamura/chrono) [![Code Climate](https://codeclimate.com/github/r7kamura/chrono/coverage.png)](https://codeclimate.com/github/r7kamura/chrono)
1
+ # Chrono
2
+
3
+ [![test](https://github.com/r7kamura/chrono/actions/workflows/test.yml/badge.svg)](https://github.com/r7kamura/chrono/actions/workflows/test.yml)
4
+ [![Gem Version](https://badge.fury.io/rb/chrono.svg)](https://rubygems.org/gems/chrono)
2
5
 
3
6
  Provides a chain of logics about chronology.
4
7
 
data/chrono.gemspec CHANGED
@@ -16,10 +16,8 @@ Gem::Specification.new do |spec|
16
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
17
  spec.require_paths = ["lib"]
18
18
 
19
- spec.add_dependency "activesupport"
19
+ spec.add_dependency "activesupport", '>= 5.2'
20
20
  spec.add_development_dependency "bundler"
21
- spec.add_development_dependency "codeclimate-test-reporter"
22
21
  spec.add_development_dependency "rake"
23
22
  spec.add_development_dependency "rspec", "~> 3.4.0"
24
- spec.add_development_dependency "simplecov"
25
23
  end
@@ -21,7 +21,7 @@ module Chrono
21
21
  fields.map(&:to_a).flatten.uniq.sort
22
22
  else
23
23
  validate!
24
- lower.step(upper, step).to_a.sort
24
+ wildcard? ? [] : lower.step(upper, step).to_a.sort
25
25
  end
26
26
  end
27
27
 
@@ -31,11 +31,21 @@ module Chrono
31
31
  source.gsub("*", "#{range.first}-#{range.last}")
32
32
  end
33
33
 
34
+ def wildcards
35
+ []
36
+ end
37
+
38
+ def wildcard?
39
+ wildcards.include?(source)
40
+ end
41
+
34
42
  def validate!
35
43
  unless match_data
36
44
  raise InvalidField.new('Unparsable field', source)
37
45
  end
38
46
 
47
+ return true if wildcard?
48
+
39
49
  if lower < range.begin || range.end < upper
40
50
  raise InvalidField.new('The field is out-of-range', source)
41
51
  end
@@ -68,7 +78,11 @@ module Chrono
68
78
  end
69
79
 
70
80
  def pattern
71
- %r<\A(\d+)(?:-(\d+))?(?:/(\d+))?\z>
81
+ ptn = %r<\A(\d+)(?:-(\d+))?(?:/(\d+))?\z>
82
+ if wildcards.any?
83
+ ptn = Regexp.union(ptn, *wildcards.map { |w| /\A#{w}\z/ })
84
+ end
85
+ ptn
72
86
  end
73
87
 
74
88
  def match_data
@@ -6,6 +6,10 @@ module Chrono
6
6
  def range
7
7
  1..31
8
8
  end
9
+
10
+ def wildcards
11
+ ['L']
12
+ end
9
13
  end
10
14
  end
11
15
  end
@@ -1,13 +1,5 @@
1
+ require "active_support"
1
2
  require "active_support/core_ext/numeric/time"
2
- require "active_support/version"
3
-
4
- if ActiveSupport::VERSION::MAJOR >= 4
5
- require "active_support/core_ext/date"
6
- require "active_support/core_ext/time"
7
- else
8
- require "active_support/core_ext/date/calculations"
9
- require "active_support/core_ext/time/calculations"
10
- end
11
3
 
12
4
  module Chrono
13
5
  class NextTime
@@ -56,7 +48,9 @@ module Chrono
56
48
  end
57
49
 
58
50
  def scheduled_in_this_day?
59
- if schedule.days?
51
+ if schedule.last_day_of_month?
52
+ time.day == time.end_of_month.day
53
+ elsif schedule.days?
60
54
  if schedule.wdays?
61
55
  schedule.days.include?(time.day) || schedule.wdays.include?(time.wday)
62
56
  else
@@ -46,6 +46,10 @@ module Chrono
46
46
  fields[4] != '*'
47
47
  end
48
48
 
49
+ def last_day_of_month?
50
+ fields[2] == 'L'
51
+ end
52
+
49
53
  private
50
54
 
51
55
  def fields
@@ -1,3 +1,3 @@
1
1
  module Chrono
2
- VERSION = "0.4.0"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -25,6 +25,8 @@ describe Chrono::Iterator do
25
25
  "2000-01-01 00:00:00", "2000-01-03 00:00:00", "0 0 1,15 * 1",
26
26
  "2000-01-01 00:00:00", "2000-01-05 00:00:00", "0 0 5,15,25 * 5",
27
27
  "2000-02-29 00:00:01", "2004-02-29 00:00:00", "0 0 29 2 *",
28
+ "2000-01-01 00:00:00", "2000-01-31 00:00:00", "0 0 L * *",
29
+ "2000-01-31 00:00:00", "2000-02-29 00:00:00", "0 0 L * *",
28
30
  ].each_slice(3) do |from, to, source|
29
31
  it "ticks #{from} to #{to} by #{source}" do
30
32
  now = Time.parse(from)
@@ -124,6 +124,10 @@ describe Chrono::Schedule do
124
124
  let (:source){ '0 0 32 * *' }
125
125
  it { expect{subject}.to raise_error(Chrono::Fields::Base::InvalidField) }
126
126
  end
127
+ context 'last day of the month' do
128
+ let (:source){ '0 0 L * *' }
129
+ it { is_expected.to eq [] }
130
+ end
127
131
  end
128
132
 
129
133
  describe '#months' do
data/spec/spec_helper.rb CHANGED
@@ -1,11 +1,3 @@
1
- require "simplecov"
2
- SimpleCov.start
3
-
4
- if ENV["CI"]
5
- require "codeclimate-test-reporter"
6
- CodeClimate::TestReporter.start
7
- end
8
-
9
1
  $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
10
2
  require "chrono"
11
3
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chrono
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryo Nakamura
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-10 00:00:00.000000000 Z
11
+ date: 2023-05-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '5.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '5.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: codeclimate-test-reporter
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rake
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -80,29 +66,15 @@ dependencies:
80
66
  - - "~>"
81
67
  - !ruby/object:Gem::Version
82
68
  version: 3.4.0
83
- - !ruby/object:Gem::Dependency
84
- name: simplecov
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- description:
69
+ description:
98
70
  email:
99
71
  - r7kamura@gmail.com
100
72
  executables: []
101
73
  extensions: []
102
74
  extra_rdoc_files: []
103
75
  files:
76
+ - ".github/workflows/test.yml"
104
77
  - ".gitignore"
105
- - ".travis.yml"
106
78
  - CHANGELOG.md
107
79
  - Gemfile
108
80
  - LICENSE.txt
@@ -129,7 +101,7 @@ homepage: https://github.com/r7kamura/chrono
129
101
  licenses:
130
102
  - MIT
131
103
  metadata: {}
132
- post_install_message:
104
+ post_install_message:
133
105
  rdoc_options: []
134
106
  require_paths:
135
107
  - lib
@@ -144,9 +116,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
116
  - !ruby/object:Gem::Version
145
117
  version: '0'
146
118
  requirements: []
147
- rubyforge_project:
148
- rubygems_version: 2.6.11
149
- signing_key:
119
+ rubygems_version: 3.3.26
120
+ signing_key:
150
121
  specification_version: 4
151
122
  summary: Provides a chain of logics about chronology.
152
123
  test_files:
data/.travis.yml DELETED
@@ -1,9 +0,0 @@
1
- rvm:
2
- - 1.9.3
3
- - 2.0.0
4
- branches:
5
- only:
6
- - master
7
- env:
8
- global:
9
- secure: bzOuKK2sEcdWchOeiS5VgKIj8R6ZFZLtmlJ3aENdYAXcrrVW+1XKAGQlT3NxH5G2EloV8nNPOX8oNXbYjs81AvEEdjZGRMYUnC59GbvtL+2zQgG77yq5xI/UXypuBQIzUBhzrwFMImSAltKsdlbsrVUtl7x8Arg1HajcMbEsg9Y=