character_set 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b7f1c6191498176e1a407177b58b54483f5da42070a455bc79cdf93c5aee39c
4
- data.tar.gz: f7852ffc6bf8198d8806f737a3bfab7471543b741b2e73b0d2b6a0184e2023c2
3
+ metadata.gz: 7a91fd10258c312d27d3fa84f99f1a97168d12ca08a3911fe31485565a999246
4
+ data.tar.gz: 2f16c02b72302259bccda6f2bf731950bd6dc8c679af8812c414ac313f1d8fc2
5
5
  SHA512:
6
- metadata.gz: 189024c25b3297b7beee9c2d32c6275c5d8e14f62fe828c1255e5c070a34c390d5a644f98607dac913120bb4d46abe143b98a2a7f2e422b876aaffa69958993e
7
- data.tar.gz: 2d552dfa89213e2ec7479128480cc9fdc5210116fa5fed9a42cf9d020a9bea774f2530f3bd64021615280fbfa16b18c08aab87a3e28a6328a7437cfa1e30b731
6
+ metadata.gz: cab6e94ec0a7efc2f26eba33dd1b4d5af639905d23422ec61420411325832a998c07359a4bf50c24379ec4550784ebc6da0effec4c917e7859392345ce9b8db0
7
+ data.tar.gz: a2dc319a9f8085e85624f25cc6f12dc03992b50f3f1a8d2000e1b69dadfdc4219c887452bdffbb213a91e1cad2011f237f604aa6fdb7e93243304d22fb5adfa3
@@ -0,0 +1,29 @@
1
+ # based on https://github.com/rails/rails/blob/4a78dcb/.github/workflows/rubocop.yml
2
+
3
+ name: rubocop linting
4
+
5
+ on: [push, pull_request]
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+
11
+ steps:
12
+ - uses: actions/checkout@v2
13
+ - name: Set up Ruby
14
+ uses: ruby/setup-ruby@v1
15
+ with:
16
+ ruby-version: 2.7
17
+ - name: Cache gems
18
+ uses: actions/cache@v1
19
+ with:
20
+ path: vendor/bundle
21
+ key: ${{ runner.os }}-rubocop-${{ hashFiles('**/Gemfile.lock') }}
22
+ restore-keys: |
23
+ ${{ runner.os }}-rubocop-
24
+ - name: Install gems
25
+ run: |
26
+ bundle config path vendor/bundle
27
+ bundle install --jobs 4 --retry 3
28
+ - name: Run rubocop
29
+ run: bundle exec rubocop --lint
@@ -0,0 +1,22 @@
1
+ name: tests
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+
9
+ strategy:
10
+ matrix:
11
+ ruby: [ '2.2', '2.7', '3.0', 'ruby-head', 'jruby-head' ]
12
+
13
+ steps:
14
+ - uses: actions/checkout@v2
15
+ - name: Set up Ruby ${{ matrix.ruby }}
16
+ uses: ruby/setup-ruby@v1
17
+ with:
18
+ ruby-version: ${{ matrix.ruby }}
19
+ - name: Install dependencies
20
+ run: bundle install --jobs 4
21
+ - name: Test with Rake
22
+ run: bundle exec rake
@@ -0,0 +1,11 @@
1
+ AllCops:
2
+ Exclude:
3
+ - '**/doc/*'
4
+ - '**/pkg/*'
5
+ - '**/spec/ruby-spec/**/*'
6
+ - '**/vendor/**/*' # vendored dependencies
7
+ NewCops: enable
8
+ RubyInterpreters:
9
+ - ruby
10
+ - rake
11
+ TargetRubyVersion: 2.4 # really 2.1, but 2.4 is lowest supported by rubocop
@@ -1,86 +1,86 @@
1
- Results of `rake:benchmark` on ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-darwin18]
1
+ Results of `rake:benchmark` on ruby 3.0.0p0 (2020-12-25 revision 95aff21468) [x86_64-darwin19]
2
2
 
3
3
  ```
4
4
  Counting non-letters
5
5
 
6
- CharacterSet#count_in: 12253693.8 i/s
7
- String#count: 1737741.7 i/s - 7.05x slower
6
+ CharacterSet#count_in: 9472902.2 i/s
7
+ String#count: 2221799.9 i/s - 4.26x slower
8
8
  ```
9
9
  ```
10
10
  Detecting non-whitespace
11
11
 
12
- CharacterSet#cover?: 14058351.9 i/s
13
- Regexp#match?: 7907608.1 i/s - 1.78x slower
12
+ CharacterSet#cover?: 12388427.2 i/s
13
+ Regexp#match?: 7901676.8 i/s - 1.57x slower
14
14
  ```
15
15
  ```
16
16
  Detecting non-letters
17
17
 
18
- CharacterSet#cover?: 13341301.6 i/s
19
- Regexp#match?: 5187453.3 i/s - 2.57x slower
18
+ CharacterSet#cover?: 12263689.1 i/s
19
+ Regexp#match?: 4940889.9 i/s - 2.48x slower
20
20
  ```
21
21
  ```
22
22
  Removing whitespace
23
23
 
24
- CharacterSet#delete_in: 2523184.0 i/s
25
- String#gsub: 225804.7 i/s - 11.17x slower
24
+ CharacterSet#delete_in: 2406722.6 i/s
25
+ String#gsub: 235760.3 i/s - 10.21x slower
26
26
  ```
27
27
  ```
28
28
  Removing whitespace, emoji and umlauts
29
29
 
30
- CharacterSet#delete_in: 1712208.6 i/s
31
- String#gsub: 278508.8 i/s - 6.15x slower
30
+ CharacterSet#delete_in: 1653607.6 i/s
31
+ String#gsub: 272782.9 i/s - 6.06x slower
32
32
  ```
33
33
  ```
34
34
  Removing non-whitespace
35
35
 
36
- CharacterSet#keep_in: 2760158.1 i/s
37
- String#gsub: 232797.7 i/s - 11.86x slower
36
+ CharacterSet#keep_in: 2671038.2 i/s
37
+ String#gsub: 242551.0 i/s - 11.01x slower
38
38
  ```
39
39
  ```
40
40
  Extracting emoji
41
41
 
42
- CharacterSet#keep_in: 1775758.8 i/s
43
- String#gsub: 217649.9 i/s - 8.16x slower
42
+ CharacterSet#keep_in: 1726496.5 i/s
43
+ String#gsub: 215609.2 i/s - 8.01x slower
44
44
  ```
45
45
  ```
46
46
  Extracting emoji to an Array
47
47
 
48
- CharacterSet#scan: 2579030.8 i/s
49
- String#scan: 545107.0 i/s - 4.73x slower
48
+ CharacterSet#scan: 2373856.1 i/s
49
+ String#scan: 480000.5 i/s - 4.95x slower
50
50
  ```
51
51
  ```
52
52
  Detecting whitespace
53
53
 
54
- CharacterSet#used_by?: 13847689.0 i/s
55
- Regexp#match?: 7533275.2 i/s - 1.84x slower
54
+ CharacterSet#used_by?: 11988328.7 i/s
55
+ Regexp#match?: 6758146.8 i/s - 1.77x slower
56
56
  ```
57
57
  ```
58
58
  Detecting emoji in a large string
59
59
 
60
- CharacterSet#used_by?: 246527.7 i/s
61
- Regexp#match?: 92956.5 i/s - 2.65x slower
60
+ CharacterSet#used_by?: 288223.3 i/s
61
+ Regexp#match?: 102384.2 i/s - 2.82x slower
62
62
  ```
63
63
  ```
64
64
  Adding entries
65
65
 
66
- CharacterSet#add: 3102081.7 i/s
67
- SortedSet#add: 1897464.8 i/s - 1.63x slower
66
+ CharacterSet#add: 2538251.2 i/s
67
+ SortedSet#add: 443925.9 i/s - 5.72x slower
68
68
  ```
69
69
  ```
70
70
  Removing entries
71
71
 
72
- CharacterSet#delete: 3240924.1 i/s
73
- SortedSet#delete: 2887493.9 i/s - 1.12x slower
72
+ CharacterSet#delete: 2487620.8 i/s
73
+ SortedSet#delete: 628816.1 i/s - 3.96x slower
74
74
  ```
75
75
  ```
76
76
  Merging entries
77
77
 
78
- CharacterSet#merge: 536.8 i/s
79
- SortedSet#merge: 12.5 i/s - 42.78x slower
78
+ CharacterSet#merge: 551.6 i/s
79
+ SortedSet#merge: 1.4 i/s - 393.59x slower
80
80
  ```
81
81
  ```
82
82
  Getting the min and max
83
83
 
84
- CharacterSet#minmax: 4111960.8 i/s
85
- SortedSet#minmax: 756.4 i/s - 5436.39x slower
84
+ CharacterSet#minmax: 636890.7 i/s
85
+ SortedSet#minmax: 254.1 i/s - 2506.20x slower
86
86
  ```
@@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
5
5
  and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [1.4.1] - 2020-01-10
8
+
9
+ ### Fixed
10
+ - multiple fixes for Ruby 3
11
+ - fixed segfault for some `String` manipulation cases
12
+ - added `sorted_set` as dependency, so `CharacterSet::Pure` (non-C fallback) works
13
+ - fixed error when parsing a `Regexp` with an empty intersection (e.g. `/[a&&]/`)
14
+
7
15
  ## [1.4.0] - 2019-06-07
8
16
 
9
17
  ### Added
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # CharacterSet
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/character_set.svg)](http://badge.fury.io/rb/character_set)
4
- [![Build Status](https://travis-ci.org/jaynetics/character_set.svg?branch=master)](https://travis-ci.org/jaynetics/character_set)
4
+ [![Build Status](https://github.com/jaynetics/character_set/workflows/tests/badge.svg)](https://github.com/jaynetics/character_set/actions)
5
5
  [![codecov](https://codecov.io/gh/jaynetics/character_set/branch/master/graph/badge.svg)](https://codecov.io/gh/jaynetics/character_set)
6
6
 
7
7
  This is a C-extended Ruby gem to work with sets of Unicode codepoints. It can read and write these sets in various formats and implements the stdlib `Set` interface for them.
@@ -3,7 +3,11 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  require 'benchmark/ips'
5
5
  require 'character_set'
6
- require 'set'
6
+ if RUBY_VERSION.to_f >= 3.0 && !RUBY_PLATFORM[/java/i]
7
+ require 'sorted_set'
8
+ else
9
+ require 'set'
10
+ end
7
11
 
8
12
  def benchmark(caption: nil, cases: {})
9
13
  puts caption
@@ -22,13 +22,23 @@ Gem::Specification.new do |s|
22
22
 
23
23
  s.required_ruby_version = '>= 2.1.0'
24
24
 
25
+ # SortedSet, needed for RubyFallback, was moved to a gem in Ruby 3.
26
+ # This dependency is only used if the C extension is unavailable.
27
+ # JRuby has it in the stdlib.
28
+ if RUBY_VERSION.to_f >= 3.0 && !RUBY_PLATFORM[/java/i]
29
+ s.add_dependency 'sorted_set', '~> 1.0'
30
+ end
31
+
25
32
  s.add_development_dependency 'benchmark-ips', '~> 2.7'
26
- s.add_development_dependency 'codecov', '~> 0.1'
27
33
  s.add_development_dependency 'get_process_mem', '~> 0.2.3'
28
- s.add_development_dependency 'rake', '~> 12.0'
29
- s.add_development_dependency 'rake-compiler', '~> 1.0'
34
+ s.add_development_dependency 'rake', '~> 13.0'
35
+ s.add_development_dependency 'rake-compiler', '~> 1.1'
30
36
  s.add_development_dependency 'range_compressor', '~> 1.0'
31
- s.add_development_dependency 'regexp_parser', '~> 1.3'
32
- s.add_development_dependency 'regexp_property_values', '~> 0.3.5'
37
+ s.add_development_dependency 'regexp_parser', '~> 1.6'
38
+ s.add_development_dependency 'regexp_property_values', '~> 1.0'
33
39
  s.add_development_dependency 'rspec', '~> 3.8'
40
+ if RUBY_VERSION.to_f >= 2.7
41
+ s.add_development_dependency 'codecov', '~> 0.2.12'
42
+ s.add_development_dependency 'rubocop', '~> 1.8'
43
+ end
34
44
  end
@@ -216,6 +216,7 @@ cs_method_hash(VALUE self)
216
216
  cs_cp cp, len, hash, four_byte_value;
217
217
  cs_ar *cps;
218
218
  cps = cs_fetch_cps(self, &len);
219
+ four_byte_value = 0;
219
220
 
220
221
  hash = 17;
221
222
  for (cp = 0; cp < len; cp++)
@@ -1074,7 +1075,7 @@ cs_method_count_in(VALUE self, VALUE str)
1074
1075
  data = cs_fetch_data(self);
1075
1076
  count = 0;
1076
1077
  each_cp(str, count_str_cp, data->cps, data->len, data, &count);
1077
- return INT2NUM(count);
1078
+ return INT2NUM((int)count);
1078
1079
  }
1079
1080
 
1080
1081
  static inline int
@@ -1194,7 +1195,7 @@ cs_apply_to_str(VALUE set, VALUE str, int delete, int bang)
1194
1195
  return rb_str_dup(str);
1195
1196
  }
1196
1197
 
1197
- new_str_buf = rb_str_buf_new(orig_len);
1198
+ new_str_buf = rb_str_buf_new(orig_len + 30); // len + margin
1198
1199
  str_enc = rb_enc_get(str);
1199
1200
  rb_enc_associate(new_str_buf, str_enc);
1200
1201
  rb_str_modify(new_str_buf);
@@ -1241,8 +1242,6 @@ cs_apply_to_str(VALUE set, VALUE str, int delete, int bang)
1241
1242
  else
1242
1243
  {
1243
1244
  RB_OBJ_WRITE(new_str_buf, &(RBASIC(new_str_buf))->klass, rb_obj_class(str));
1244
- // slightly cumbersome approach needed for compatibility with Ruby < 2.3:
1245
- RBASIC(new_str_buf)->flags |= (RBASIC(str)->flags & (FL_TAINT));
1246
1245
  str = new_str_buf;
1247
1246
  }
1248
1247
 
@@ -8,4 +8,4 @@ class CharacterSet
8
8
  end
9
9
  end
10
10
 
11
- ::Regexp.send(:include, CharacterSet::CoreExt::RegexpExt)
11
+ ::Regexp.instance_eval { include CharacterSet::CoreExt::RegexpExt }
@@ -29,4 +29,4 @@ class CharacterSet
29
29
  end
30
30
  end
31
31
 
32
- ::String.send(:include, CharacterSet::CoreExt::StringExt)
32
+ ::String.instance_eval { include CharacterSet::CoreExt::StringExt }
@@ -5,7 +5,7 @@ class CharacterSet
5
5
  Error = Class.new(ArgumentError)
6
6
 
7
7
  def convert(expression)
8
- CharacterSet.require_optional_dependency('regexp_parser')
8
+ CharacterSet.require_optional_dependency('regexp_parser', __method__)
9
9
 
10
10
  case expression
11
11
  when Regexp::Expression::Root
@@ -16,13 +16,14 @@ class CharacterSet
16
16
 
17
17
  when Regexp::Expression::CharacterSet
18
18
  content = expression.map { |subexp| convert(subexp) }.reduce(:+)
19
+ content ||= CharacterSet[]
19
20
  expression.negative? ? content.inversion : content
20
21
 
21
22
  when Regexp::Expression::CharacterSet::Intersection
22
23
  expression.map { |subexp| convert(subexp) }.reduce(:&)
23
24
 
24
25
  when Regexp::Expression::CharacterSet::IntersectedSequence
25
- expression.map { |subexp| convert(subexp) }.reduce(:+)
26
+ expression.map { |subexp| convert(subexp) }.reduce(:+) || CharacterSet[]
26
27
 
27
28
  when Regexp::Expression::CharacterSet::Range
28
29
  start, finish = expression.map { |subexp| convert(subexp) }
@@ -67,7 +68,7 @@ class CharacterSet
67
68
  raise Error, 'Groups must contain exactly one expression, e.g. ([a-z])'
68
69
  end
69
70
 
70
- when Regexp::Expression::Alternation
71
+ when Regexp::Expression::Alternation # rubocop:disable Lint/DuplicateBranch
71
72
  expression.map { |subexp| convert(subexp) }.reduce(:+)
72
73
 
73
74
  when Regexp::Expression::Alternative
@@ -5,7 +5,7 @@ class CharacterSet
5
5
  def codepoints_from_enumerable(object)
6
6
  raise ArgumentError, 'pass an Enumerable' unless object.respond_to?(:each)
7
7
  # Use #each to check first element (only this works for all Enumerables)
8
- object.each do |e|
8
+ object.each do |e| # rubocop:disable Lint/UnreachableLoop
9
9
  return object if e.is_a?(Integer) && e >= 0 && e < 0x110000
10
10
  return object.map(&:ord) if e.is_a?(String) && e.length == 1
11
11
  raise ArgumentError, "#{e.inspect} is not valid as a codepoint"
@@ -1,4 +1,8 @@
1
- require 'set'
1
+ if RUBY_VERSION.to_f >= 3.0 && !RUBY_PLATFORM[/java/i]
2
+ require 'sorted_set'
3
+ else
4
+ require 'set'
5
+ end
2
6
  require 'character_set/ruby_fallback/set_methods'
3
7
  require 'character_set/ruby_fallback/character_set_methods'
4
8
 
@@ -31,7 +31,7 @@ class CharacterSet
31
31
  end
32
32
 
33
33
  def ranges
34
- CharacterSet.require_optional_dependency('range_compressor')
34
+ CharacterSet.require_optional_dependency('range_compressor', __method__)
35
35
  RangeCompressor.compress(self)
36
36
  end
37
37
 
@@ -121,10 +121,9 @@ class CharacterSet
121
121
  end
122
122
 
123
123
  def make_new_str(original, &block)
124
- new_string = str!(original)
124
+ str!(original)
125
125
  .each_codepoint
126
126
  .each_with_object(''.encode(original.encoding), &block)
127
- original.tainted? ? new_string.taint : new_string
128
127
  end
129
128
  end
130
129
  end
@@ -1,7 +1,9 @@
1
1
  class CharacterSet
2
2
  module RubyFallback
3
3
  module SetMethods
4
- Enumerable.instance_methods.concat(%w[empty? length size]).each do |mthd|
4
+ (Enumerable.instance_methods -
5
+ %i[include? member? to_a] +
6
+ %i[empty? length size]).each do |mthd|
5
7
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
6
8
  def #{mthd}(*args, &block)
7
9
  @__set.#{mthd}(*args, &block)
@@ -9,7 +11,7 @@ class CharacterSet
9
11
  RUBY
10
12
  end
11
13
 
12
- %w[< <= > >= disjoint? intersect? proper_subset? proper_superset?
14
+ %i[< <= > >= disjoint? intersect? proper_subset? proper_superset?
13
15
  subset? superset?].each do |mthd|
14
16
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
15
17
  def #{mthd}(enum, &block)
@@ -21,8 +23,8 @@ class CharacterSet
21
23
  RUBY
22
24
  end
23
25
 
24
- %w[<< === add add? clear collect! delete delete? delete_if
25
- each filter! hash include? map! member? keep_if reject!
26
+ %i[<< add add? clear collect! delete delete? delete_if
27
+ each filter! map! keep_if reject!
26
28
  select! subtract].each do |mthd|
27
29
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
28
30
  def #{mthd}(*args, &block)
@@ -32,22 +34,22 @@ class CharacterSet
32
34
  RUBY
33
35
  end
34
36
 
35
- %w[& + - ^ | difference intersection union].each do |mthd|
37
+ # revert if https://github.com/knu/sorted_set/issues/2 is resolved
38
+ %i[=== include? member?].each do |mthd|
36
39
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
37
- def #{mthd}(enum, &block)
38
- if enum.respond_to?(:map)
39
- enum = enum.map { |el| el.is_a?(String) ? el.ord : el }
40
- end
41
- self.class.new(@__set.#{mthd}(enum, &block).to_a)
40
+ def #{mthd}(*args, &block)
41
+ !!@__set.#{mthd}(*args, &block)
42
42
  end
43
43
  RUBY
44
44
  end
45
45
 
46
- %w[taint untaint].each do |mthd|
46
+ %i[& + - ^ | difference intersection union].each do |mthd|
47
47
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
48
- def #{mthd}
49
- @__set.#{mthd}
50
- super
48
+ def #{mthd}(enum, &block)
49
+ if enum.respond_to?(:map)
50
+ enum = enum.map { |el| el.is_a?(String) ? el.ord : el }
51
+ end
52
+ self.class.new(@__set.#{mthd}(enum, &block).to_a)
51
53
  end
52
54
  RUBY
53
55
  end
@@ -81,7 +83,13 @@ class CharacterSet
81
83
 
82
84
  def eql?(other)
83
85
  return false unless other.is_a?(self.class)
84
- @__set.eql?(other.instance_variable_get(:@__set))
86
+ # revert if https://github.com/knu/sorted_set/issues/3 is resolved
87
+ hash == other.hash
88
+ end
89
+
90
+ # revert if https://github.com/knu/sorted_set/issues/3 is resolved
91
+ def hash
92
+ @__set.to_a.hash
85
93
  end
86
94
 
87
95
  def initialize_dup(orig)
@@ -22,14 +22,14 @@ class CharacterSet
22
22
  end
23
23
 
24
24
  def of_property(property_name)
25
- require_optional_dependency('regexp_property_values')
25
+ require_optional_dependency('regexp_property_values', __method__)
26
26
 
27
27
  property = RegexpPropertyValues[property_name.to_s]
28
28
  from_ranges(*property.matched_ranges)
29
29
  end
30
30
 
31
31
  def of_regexp(regexp)
32
- require_optional_dependency('regexp_parser')
32
+ require_optional_dependency('regexp_parser', __method__)
33
33
 
34
34
  root = ::Regexp::Parser.parse(regexp)
35
35
  of_expression(root)
@@ -39,16 +39,12 @@ class CharacterSet
39
39
  ExpressionConverter.convert(expression)
40
40
  end
41
41
 
42
- def require_optional_dependency(name)
42
+ def require_optional_dependency(name, method)
43
43
  required_optional_dependencies[name] ||= begin
44
44
  require name
45
45
  true
46
46
  rescue ::LoadError
47
- entry_point = caller_locations.reverse.find do |loc|
48
- loc.absolute_path.to_s.include?('/lib/character_set')
49
- end
50
- method = entry_point && entry_point.label
51
- raise LoadError, 'You must the install the optional dependency '\
47
+ raise LoadError, 'You must install the optional dependency '\
52
48
  "'\#{name}' to use the method `\#{method}'."
53
49
  end
54
50
  end
@@ -155,7 +151,7 @@ class CharacterSet
155
151
  end
156
152
 
157
153
  def divide(&func)
158
- require 'set'
154
+ CharacterSet.require_optional_dependency('set', __method__)
159
155
  Set.new(to_a).divide(&func)
160
156
  end
161
157
  RUBY
@@ -1,3 +1,3 @@
1
1
  class CharacterSet
2
- VERSION = '1.4.0'
2
+ VERSION = '1.4.1'
3
3
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: character_set
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Janosch Müller
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-07 00:00:00.000000000 Z
11
+ date: 2021-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: benchmark-ips
14
+ name: sorted_set
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.7'
20
- type: :development
19
+ version: '1.0'
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: '2.7'
26
+ version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: codecov
28
+ name: benchmark-ips
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.1'
33
+ version: '2.7'
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: '0.1'
40
+ version: '2.7'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: get_process_mem
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '12.0'
61
+ version: '13.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '12.0'
68
+ version: '13.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake-compiler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.0'
75
+ version: '1.1'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.0'
82
+ version: '1.1'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: range_compressor
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -100,28 +100,28 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.3'
103
+ version: '1.6'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.3'
110
+ version: '1.6'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: regexp_property_values
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 0.3.5
117
+ version: '1.0'
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.3.5
124
+ version: '1.0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -136,7 +136,35 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '3.8'
139
- description:
139
+ - !ruby/object:Gem::Dependency
140
+ name: codecov
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 0.2.12
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 0.2.12
153
+ - !ruby/object:Gem::Dependency
154
+ name: rubocop
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.8'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.8'
167
+ description:
140
168
  email:
141
169
  - janosch84@gmail.com
142
170
  executables: []
@@ -145,9 +173,11 @@ extensions:
145
173
  extra_rdoc_files: []
146
174
  files:
147
175
  - ".gitattributes"
176
+ - ".github/workflows/lint.yml"
177
+ - ".github/workflows/tests.yml"
148
178
  - ".gitignore"
149
179
  - ".rspec"
150
- - ".travis.yml"
180
+ - ".rubocop.yml"
151
181
  - BENCHMARK.md
152
182
  - CHANGELOG.md
153
183
  - Gemfile
@@ -208,7 +238,7 @@ homepage: https://github.com/jaynetics/character_set
208
238
  licenses:
209
239
  - MIT
210
240
  metadata: {}
211
- post_install_message:
241
+ post_install_message:
212
242
  rdoc_options: []
213
243
  require_paths:
214
244
  - lib
@@ -223,8 +253,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
253
  - !ruby/object:Gem::Version
224
254
  version: '0'
225
255
  requirements: []
226
- rubygems_version: 3.0.3
227
- signing_key:
256
+ rubygems_version: 3.2.3
257
+ signing_key:
228
258
  specification_version: 4
229
259
  summary: Build, read, write and compare sets of Unicode codepoints.
230
260
  test_files: []
@@ -1,9 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- rvm:
4
- - 2.1
5
- - 2.4
6
- - 2.5
7
- - 2.6
8
- - ruby-head
9
- - jruby-9.1.9.0