semantic_range 2.0.0 → 2.3.1

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: a72dfb5f4daf51c6e6d88874e8841c320d27dfaf
4
- data.tar.gz: 90a11311eb49a841ca6a6d811dfd6e9e459e3064
2
+ SHA256:
3
+ metadata.gz: ccde626c1a653687b8994fa8f79db2862c424e785e5f9947081481eadce45a21
4
+ data.tar.gz: d73b3387a5955017d9133f41a9ab844fb647805d206f1b5221e82ace813c68fb
5
5
  SHA512:
6
- metadata.gz: 64ec8be0833eb08994a285705502f29973447291e91fb34655f38734d64bb3e00a3f9297c782fe6b856aa75800b4687a58edfe36036f6d7f1ef824881581be12
7
- data.tar.gz: 355e05563a46f6258e0c3783dff2f9fa9dade4e00ce86af3d8f79643b9b64f82595aaee3e30154a629a67b7fbb2073c036c3801f7e06dba047008b4b98b4f142
6
+ metadata.gz: df892019675f0bd4c9b0d9e38dbc373201de7b7ee1a5e40f0aa0f6339d7915021476b01569aaa6e2ab4a903fa45c5fc6fa31449877a221be90bf155b6b2e7527
7
+ data.tar.gz: ca56913a665bc5b9adca0f5497331c11c190149ca1f6349fdc370f4fe4405cced341a19c95b991ded906fc6edd123022dbfd88aabbfef94f2637bde85c49410b
data/README.md CHANGED
@@ -24,9 +24,10 @@ Or install it yourself as:
24
24
  SemanticRange.valid('1.2.3') # '1.2.3'
25
25
  SemanticRange.valid('a.b.c') # nil
26
26
  SemanticRange.clean(' =v1.2.3 ') # '1.2.3'
27
- SemanticRange.satisfies('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') # true
28
- SemanticRange.gt('1.2.3', '9.8.7') # false
29
- SemanticRange.lt('1.2.3', '9.8.7') # true
27
+ SemanticRange.filter(['0.9.0', '1.3.0', '1.5.0', '2.0.5'], '1.3.0 || <1.0.0 || >2.0.0') # ['0.9.0', '1.3.0', '2.0.5']
28
+ SemanticRange.satisfies?('1.2.3', '1.x || >=2.5.0 || 5.0.0 - 7.2.3') # true
29
+ SemanticRange.gt?('1.2.3', '9.8.7') # false
30
+ SemanticRange.lt?('1.2.3', '9.8.7') # true
30
31
  ```
31
32
 
32
33
  ## Development
@@ -50,12 +50,12 @@ module SemanticRange
50
50
  class InvalidComparator < StandardError; end
51
51
  class InvalidRange < StandardError; end
52
52
 
53
- def self.ltr(version, range, loose = false, platform = nil)
54
- outside(version, range, '<', loose, platform)
53
+ def self.ltr?(version, range, loose = false, platform = nil)
54
+ outside?(version, range, '<', loose, platform)
55
55
  end
56
56
 
57
- def self.gtr(version, range, loose = false, platform = nil)
58
- outside(version, range, '>', loose, platform)
57
+ def self.gtr?(version, range, loose = false, platform = nil)
58
+ outside?(version, range, '>', loose, platform)
59
59
  end
60
60
 
61
61
  def self.cmp(a, op, b, loose = false)
@@ -69,27 +69,27 @@ module SemanticRange
69
69
  b = b.version if !b.is_a?(String)
70
70
  a != b
71
71
  when '', '=', '=='
72
- eq(a, b, loose)
72
+ eq?(a, b, loose)
73
73
  when '!='
74
- neq(a, b, loose)
74
+ neq?(a, b, loose)
75
75
  when '>'
76
- gt(a, b, loose)
76
+ gt?(a, b, loose)
77
77
  when '>='
78
- gte(a, b, loose)
78
+ gte?(a, b, loose)
79
79
  when '<'
80
- lt(a, b, loose)
80
+ lt?(a, b, loose)
81
81
  when '<='
82
- lte(a, b, loose)
82
+ lte?(a, b, loose)
83
83
  else
84
84
  raise 'Invalid operator: ' + op
85
85
  end
86
86
  end
87
87
 
88
- def self.outside(version, range, hilo, loose = false, platform = nil)
88
+ def self.outside?(version, range, hilo, loose = false, platform = nil)
89
89
  version = Version.new(version, loose)
90
90
  range = Range.new(range, loose, platform)
91
91
 
92
- return false if satisfies(version, range, loose, platform)
92
+ return false if satisfies?(version, range, loose, platform)
93
93
 
94
94
  case hilo
95
95
  when '>'
@@ -114,15 +114,15 @@ module SemanticRange
114
114
 
115
115
  case hilo
116
116
  when '>'
117
- if gt(comparator.semver, high.semver, loose)
117
+ if gt?(comparator.semver, high.semver, loose)
118
118
  high = comparator
119
- elsif lt(comparator.semver, low.semver, loose)
119
+ elsif lt?(comparator.semver, low.semver, loose)
120
120
  low = comparator
121
121
  end
122
122
  when '<'
123
- if lt(comparator.semver, high.semver, loose)
123
+ if lt?(comparator.semver, high.semver, loose)
124
124
  high = comparator
125
- elsif gt(comparator.semver, low.semver, loose)
125
+ elsif gt?(comparator.semver, low.semver, loose)
126
126
  low = comparator
127
127
  end
128
128
  end
@@ -132,15 +132,15 @@ module SemanticRange
132
132
 
133
133
  case hilo
134
134
  when '>'
135
- if (low.operator.empty? || low.operator == comp) && lte(version, low.semver, loose)
135
+ if (low.operator.empty? || low.operator == comp) && lte?(version, low.semver, loose)
136
136
  return false;
137
- elsif (low.operator == ecomp && lt(version, low.semver, loose))
137
+ elsif (low.operator == ecomp && lt?(version, low.semver, loose))
138
138
  return false;
139
139
  end
140
140
  when '<'
141
- if (low.operator.empty? || low.operator == comp) && gte(version, low.semver, loose)
141
+ if (low.operator.empty? || low.operator == comp) && gte?(version, low.semver, loose)
142
142
  return false;
143
- elsif low.operator == ecomp && gt(version, low.semver, loose)
143
+ elsif low.operator == ecomp && gt?(version, low.semver, loose)
144
144
  return false;
145
145
  end
146
146
  end
@@ -148,14 +148,20 @@ module SemanticRange
148
148
  true
149
149
  end
150
150
 
151
- def self.satisfies(version, range, loose = false, platform = nil)
151
+ def self.satisfies?(version, range, loose = false, platform = nil)
152
152
  return false if !valid_range(range, loose, platform)
153
153
  Range.new(range, loose, platform).test(version)
154
154
  end
155
155
 
156
+ def self.filter(versions, range, loose = false, platform = nil)
157
+ return [] if !valid_range(range, loose, platform)
158
+
159
+ versions.filter { |v| SemanticRange.satisfies?(v, range, loose, platform) }
160
+ end
161
+
156
162
  def self.max_satisfying(versions, range, loose = false, platform = nil)
157
163
  versions.select { |version|
158
- satisfies(version, range, loose, platform)
164
+ satisfies?(version, range, loose, platform)
159
165
  }.sort { |a, b|
160
166
  rcompare(a, b, loose)
161
167
  }[0] || nil
@@ -191,27 +197,27 @@ module SemanticRange
191
197
  # TODO
192
198
  end
193
199
 
194
- def self.lt(a, b, loose = false)
200
+ def self.lt?(a, b, loose = false)
195
201
  compare(a, b, loose) < 0
196
202
  end
197
203
 
198
- def self.gt(a, b, loose = false)
204
+ def self.gt?(a, b, loose = false)
199
205
  compare(a, b, loose) > 0
200
206
  end
201
207
 
202
- def self.eq(a, b, loose = false)
208
+ def self.eq?(a, b, loose = false)
203
209
  compare(a, b, loose) == 0
204
210
  end
205
211
 
206
- def self.neq(a, b, loose = false)
212
+ def self.neq?(a, b, loose = false)
207
213
  compare(a, b, loose) != 0
208
214
  end
209
215
 
210
- def self.gte(a, b, loose = false)
216
+ def self.gte?(a, b, loose = false)
211
217
  compare(a, b, loose) >= 0
212
218
  end
213
219
 
214
- def self.lte(a, b, loose = false)
220
+ def self.lte?(a, b, loose = false)
215
221
  compare(a, b, loose) <= 0
216
222
  end
217
223
 
@@ -230,14 +236,14 @@ module SemanticRange
230
236
 
231
237
  return nil unless version.is_a?(String)
232
238
 
233
- version.strip!
239
+ stripped_version = version.strip
234
240
 
235
- return nil if version.length > MAX_LENGTH
241
+ return nil if stripped_version.length > MAX_LENGTH
236
242
 
237
243
  rxp = loose ? LOOSE : FULL
238
- return nil if !rxp.match(version)
244
+ return nil if !rxp.match(stripped_version)
239
245
 
240
- Version.new(version, loose)
246
+ Version.new(stripped_version, loose)
241
247
  end
242
248
 
243
249
  def self.increment!(version, release, loose, identifier)
@@ -267,4 +273,18 @@ module SemanticRange
267
273
  comp.map(&:to_s)
268
274
  end
269
275
  end
276
+
277
+ class << self
278
+ # Support for older non-inquisitive method versions
279
+ alias_method :gt, :gt?
280
+ alias_method :gtr, :gtr?
281
+ alias_method :gte, :gte?
282
+ alias_method :lt, :lt?
283
+ alias_method :ltr, :ltr?
284
+ alias_method :lte, :lte?
285
+ alias_method :eq, :eq?
286
+ alias_method :neq, :neq?
287
+ alias_method :outside, :outside?
288
+ alias_method :satisfies, :satisfies?
289
+ end
270
290
  end
@@ -2,12 +2,9 @@ module SemanticRange
2
2
  class Comparator
3
3
  attr_reader :semver, :operator, :value
4
4
  def initialize(comp, loose)
5
- if comp.is_a?(Comparator)
6
- return comp if comp.loose == loose
7
- @comp = comp.value
8
- end
9
-
5
+ comp = comp.value if comp.is_a?(Comparator)
10
6
  @loose = loose
7
+
11
8
  parse(comp)
12
9
 
13
10
  @value = @semver == ANY ? '' : @operator + @semver.version
@@ -32,5 +29,43 @@ module SemanticRange
32
29
 
33
30
  @semver = !m[2] ? ANY : Version.new(m[2], @loose)
34
31
  end
32
+
33
+ def intersects?(comp, loose = false, platform = nil)
34
+ comp = Comparator.new(comp, loose)
35
+
36
+ if @operator == ''
37
+ range_b = Range.new(comp.value, loose, platform)
38
+ SemanticRange.satisfies?(@value, range_b, loose, platform)
39
+ elsif comp.operator == ''
40
+ range_a = Range.new(@value, loose, platform)
41
+ SemanticRange.satisfies?(comp.semver, range_a, loose, platform)
42
+ else
43
+ same_direction_increasing = (@operator == '>=' || @operator == '>') && (comp.operator == '>=' || comp.operator == '>')
44
+ same_direction_decreasing = (@operator == '<=' || @operator == '<') && (comp.operator == '<=' || comp.operator == '<')
45
+ same_version = @semver.raw == comp.semver.raw
46
+ different_directions_inclusive = (@operator == '>=' || @operator == '<=') && (comp.operator == '>=' || comp.operator == '<=')
47
+ opposite_directions_lte = SemanticRange.cmp(@semver, '<', comp.semver, loose) &&
48
+ ((@operator == '>=' || @operator == '>') && (comp.operator == '<=' || comp.operator == '<'))
49
+ opposite_directions_gte = SemanticRange.cmp(@semver, '>', comp.semver, loose) &&
50
+ ((@operator == '<=' || @operator == '<') && (comp.operator == '>=' || comp.operator == '>'))
51
+
52
+ same_direction_increasing || same_direction_decreasing || (same_version && different_directions_inclusive) ||
53
+ opposite_directions_lte || opposite_directions_gte
54
+ end
55
+ end
56
+
57
+ def satisfies_range?(range, loose = false, platform = nil)
58
+ range = Range.new(range, loose, platform)
59
+
60
+ range.set.any? do |comparators|
61
+ comparators.all? do |comparator|
62
+ intersects?(comparator, loose, platform)
63
+ end
64
+ end
65
+ end
66
+
67
+ # Support for older non-inquisitive method versions
68
+ alias_method :intersects, :intersects?
69
+ alias_method :satisfies_range, :satisfies_range?
35
70
  end
36
71
  end
@@ -64,6 +64,9 @@ module SemanticRange
64
64
  # caret trim
65
65
  range = range.gsub(CARETTRIM, '\1^')
66
66
 
67
+ # comma trim
68
+ range = range.gsub(',', ' ')
69
+
67
70
  # normalise spaces
68
71
  range = range.split(/\s+/).join(' ')
69
72
 
@@ -279,5 +282,15 @@ module SemanticRange
279
282
 
280
283
  "#{from} #{to}".strip
281
284
  end
285
+
286
+ def intersects(range, loose = false, platform = nil)
287
+ range = Range.new(range, loose, platform)
288
+
289
+ @set.any? do |comparators|
290
+ comparators.all? do |comparator|
291
+ comparator.satisfies_range(range, loose, platform)
292
+ end
293
+ end
294
+ end
282
295
  end
283
296
  end
@@ -1,5 +1,5 @@
1
1
  module SemanticRange
2
- VERSION = "2.0.0"
2
+ VERSION = "2.3.1"
3
3
 
4
4
  class Version
5
5
  attr_reader :major, :minor, :patch, :prerelease
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: semantic_range
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Nesbitt
8
- autorequire:
9
- bindir: exe
8
+ autorequire:
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-20 00:00:00.000000000 Z
11
+ date: 2020-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '11.0'
33
+ version: '12.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '11.0'
40
+ version: '12.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,36 +52,25 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.4'
55
- description:
55
+ description:
56
56
  email:
57
57
  - andrewnez@gmail.com
58
58
  executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - ".gitignore"
63
- - ".rspec"
64
- - ".travis.yml"
65
- - CODE_OF_CONDUCT.md
66
- - CONTRIBUTING.md
67
- - Gemfile
68
- - Guardfile
69
62
  - LICENSE.txt
70
63
  - README.md
71
- - Rakefile
72
- - bin/console
73
- - bin/setup
74
64
  - lib/semantic_range.rb
75
65
  - lib/semantic_range/comparator.rb
76
66
  - lib/semantic_range/pre_release.rb
77
67
  - lib/semantic_range/range.rb
78
68
  - lib/semantic_range/version.rb
79
- - semantic_range.gemspec
80
69
  homepage: https://libraries.io/github/librariesio/semantic_range
81
70
  licenses:
82
71
  - MIT
83
72
  metadata: {}
84
- post_install_message:
73
+ post_install_message:
85
74
  rdoc_options: []
86
75
  require_paths:
87
76
  - lib
@@ -96,9 +85,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
85
  - !ruby/object:Gem::Version
97
86
  version: '0'
98
87
  requirements: []
99
- rubyforge_project:
100
- rubygems_version: 2.6.4
101
- signing_key:
88
+ rubygems_version: 3.0.4
89
+ signing_key:
102
90
  specification_version: 4
103
91
  summary: node-semver rewritten in ruby, for comparison and inclusion of semantic versions
104
92
  and ranges
data/.gitignore DELETED
@@ -1,9 +0,0 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --format documentation
2
- --color
@@ -1,6 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.4
4
- before_install: gem install bundler -v 1.11
5
- cache: bundler
6
- sudo: false
@@ -1,74 +0,0 @@
1
- # Contributor Covenant Code of Conduct
2
-
3
- ## Our Pledge
4
-
5
- In the interest of fostering an open and welcoming environment, we as
6
- contributors and maintainers pledge to making participation in our project and
7
- our community a harassment-free experience for everyone, regardless of age, body
8
- size, disability, ethnicity, gender identity and expression, level of experience,
9
- nationality, personal appearance, race, religion, or sexual identity and
10
- orientation.
11
-
12
- ## Our Standards
13
-
14
- Examples of behavior that contributes to creating a positive environment
15
- include:
16
-
17
- * Using welcoming and inclusive language
18
- * Being respectful of differing viewpoints and experiences
19
- * Gracefully accepting constructive criticism
20
- * Focusing on what is best for the community
21
- * Showing empathy towards other community members
22
-
23
- Examples of unacceptable behavior by participants include:
24
-
25
- * The use of sexualized language or imagery and unwelcome sexual attention or
26
- advances
27
- * Trolling, insulting/derogatory comments, and personal or political attacks
28
- * Public or private harassment
29
- * Publishing others' private information, such as a physical or electronic
30
- address, without explicit permission
31
- * Other conduct which could reasonably be considered inappropriate in a
32
- professional setting
33
-
34
- ## Our Responsibilities
35
-
36
- Project maintainers are responsible for clarifying the standards of acceptable
37
- behavior and are expected to take appropriate and fair corrective action in
38
- response to any instances of unacceptable behavior.
39
-
40
- Project maintainers have the right and responsibility to remove, edit, or
41
- reject comments, commits, code, wiki edits, issues, and other contributions
42
- that are not aligned to this Code of Conduct, or to ban temporarily or
43
- permanently any contributor for other behaviors that they deem inappropriate,
44
- threatening, offensive, or harmful.
45
-
46
- ## Scope
47
-
48
- This Code of Conduct applies both within project spaces and in public spaces
49
- when an individual is representing the project or its community. Examples of
50
- representing a project or community include using an official project e-mail
51
- address, posting via an official social media account, or acting as an appointed
52
- representative at an online or offline event. Representation of a project may be
53
- further defined and clarified by project maintainers.
54
-
55
- ## Enforcement
56
-
57
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at andrew@libraries.io. All
59
- complaints will be reviewed and investigated and will result in a response that
60
- is deemed necessary and appropriate to the circumstances. The project team is
61
- obligated to maintain confidentiality with regard to the reporter of an incident.
62
- Further details of specific enforcement policies may be posted separately.
63
-
64
- Project maintainers who do not follow or enforce the Code of Conduct in good
65
- faith may face temporary or permanent repercussions as determined by other
66
- members of the project's leadership.
67
-
68
- ## Attribution
69
-
70
- This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
- available at [http://contributor-covenant.org/version/1/4][version]
72
-
73
- [homepage]: http://contributor-covenant.org
74
- [version]: http://contributor-covenant.org/version/1/4/
@@ -1,10 +0,0 @@
1
- # Contributing
2
-
3
- * Fork the project.
4
- * Make your feature addition or bug fix.
5
- * Add tests for it. This is important so I don't break it in a future version unintentionally.
6
- * Send a pull request. Bonus points for topic branches.
7
-
8
- ## Code of Conduct
9
-
10
- Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
data/Gemfile DELETED
@@ -1,5 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in semantic_range.gemspec
4
- gemspec
5
- gem 'guard-rspec'
data/Guardfile DELETED
@@ -1,87 +0,0 @@
1
- # A sample Guardfile
2
- # More info at https://github.com/guard/guard#readme
3
-
4
- ## Uncomment and set this to only include directories you want to watch
5
- # directories %w(app lib config test spec features) \
6
- # .select{|d| Dir.exists?(d) ? d : UI.warning("Directory #{d} does not exist")}
7
-
8
- ## Note: if you are using the `directories` clause above and you are not
9
- ## watching the project directory ('.'), then you will want to move
10
- ## the Guardfile to a watched dir and symlink it back, e.g.
11
- #
12
- # $ mkdir config
13
- # $ mv Guardfile config/
14
- # $ ln -s config/Guardfile .
15
- #
16
- # and, you'll have to watch "config/Guardfile" instead of "Guardfile"
17
-
18
- guard :bundler do
19
- require 'guard/bundler'
20
- require 'guard/bundler/verify'
21
- helper = Guard::Bundler::Verify.new
22
-
23
- files = ['Gemfile']
24
- files += Dir['*.gemspec'] if files.any? { |f| helper.uses_gemspec?(f) }
25
-
26
- # Assume files are symlinked from somewhere
27
- files.each { |file| watch(helper.real_path(file)) }
28
- end
29
-
30
- guard 'migrate' do
31
- watch(%r{^db/migrate/(\d+).+\.rb})
32
- watch('db/seeds.rb')
33
- end
34
-
35
- # Note: The cmd option is now required due to the increasing number of ways
36
- # rspec may be run, below are examples of the most common uses.
37
- # * bundler: 'bundle exec rspec'
38
- # * bundler binstubs: 'bin/rspec'
39
- # * spring: 'bin/rspec' (This will use spring if running and you have
40
- # installed the spring binstubs per the docs)
41
- # * zeus: 'zeus rspec' (requires the server to be started separately)
42
- # * 'just' rspec: 'rspec'
43
-
44
- guard :rspec, cmd: "bundle exec rspec" do
45
- require "guard/rspec/dsl"
46
- dsl = Guard::RSpec::Dsl.new(self)
47
-
48
- # Feel free to open issues for suggestions and improvements
49
-
50
- # RSpec files
51
- rspec = dsl.rspec
52
- watch(rspec.spec_helper) { rspec.spec_dir }
53
- watch(rspec.spec_support) { rspec.spec_dir }
54
- watch(rspec.spec_files)
55
-
56
- # Ruby files
57
- ruby = dsl.ruby
58
- dsl.watch_spec_files_for(ruby.lib_files)
59
-
60
- # Rails files
61
- rails = dsl.rails(view_extensions: %w(erb haml slim))
62
- dsl.watch_spec_files_for(rails.app_files)
63
- dsl.watch_spec_files_for(rails.views)
64
-
65
- watch(rails.controllers) do |m|
66
- [
67
- rspec.spec.("routing/#{m[1]}_routing"),
68
- rspec.spec.("controllers/#{m[1]}_controller"),
69
- rspec.spec.("acceptance/#{m[1]}")
70
- ]
71
- end
72
-
73
- # Rails config changes
74
- watch(rails.spec_helper) { rspec.spec_dir }
75
- watch(rails.routes) { "#{rspec.spec_dir}/routing" }
76
- watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
77
-
78
- # Capybara features specs
79
- watch(rails.view_dirs) { |m| rspec.spec.("features/#{m[1]}") }
80
- watch(rails.layouts) { |m| rspec.spec.("features/#{m[1]}") }
81
-
82
- # Turnip features and steps
83
- watch(%r{^spec/acceptance/(.+)\.feature$})
84
- watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) do |m|
85
- Dir[File.join("**/#{m[1]}.feature")][0] || "spec/acceptance"
86
- end
87
- end
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "semantic_range"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start
data/bin/setup DELETED
@@ -1,7 +0,0 @@
1
- #!/bin/bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
-
5
- bundle install
6
-
7
- # Do any other automated setup that you need to do here
@@ -1,24 +0,0 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'semantic_range/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "semantic_range"
8
- spec.version = SemanticRange::VERSION
9
- spec.authors = ["Andrew Nesbitt"]
10
- spec.email = ["andrewnez@gmail.com"]
11
-
12
- spec.summary = %q{node-semver rewritten in ruby, for comparison and inclusion of semantic versions and ranges}
13
- spec.homepage = "https://libraries.io/github/librariesio/semantic_range"
14
- spec.license = "MIT"
15
-
16
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.bindir = "exe"
18
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
20
-
21
- spec.add_development_dependency "bundler", "~> 1.11"
22
- spec.add_development_dependency "rake", "~> 11.0"
23
- spec.add_development_dependency "rspec", "~> 3.4"
24
- end