character_set 1.7.0-java → 1.9.0-java

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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +4 -1
  3. data/CHANGELOG.md +19 -0
  4. data/LICENSE.txt +1 -1
  5. data/README.md +4 -3
  6. data/Rakefile +12 -5
  7. data/ext/character_set/character_set.c +91 -67
  8. data/ext/character_set/java/src/main/java/org/jaynetics/characterset/CharacterSetService.java +15 -0
  9. data/ext/character_set/java/src/main/java/org/jaynetics/characterset/RubyCharacterSet.java +493 -0
  10. data/ext/character_set/java/src/main/java/org/jaynetics/characterset/StringOperations.java +138 -0
  11. data/lib/character_set/character_set.jar +0 -0
  12. data/lib/character_set/core_ext/regexp_ext.rb +8 -0
  13. data/lib/character_set/expression_converter.rb +37 -54
  14. data/lib/character_set/java.rb +6 -0
  15. data/lib/character_set/parser.rb +5 -3
  16. data/lib/character_set/predefined_sets/assigned.cps +95 -58
  17. data/lib/character_set/predefined_sets/emoji.cps +9 -11
  18. data/lib/character_set/predefined_sets.rb +1 -1
  19. data/lib/character_set/ruby_fallback/character_set_methods.rb +7 -14
  20. data/lib/character_set/ruby_fallback/set_methods.rb +215 -53
  21. data/lib/character_set/ruby_fallback.rb +4 -2
  22. data/lib/character_set/set_method_adapters.rb +1 -1
  23. data/lib/character_set/shared_methods.rb +43 -2
  24. data/lib/character_set/version.rb +1 -1
  25. data/lib/character_set/writer.rb +1 -1
  26. data/lib/character_set.rb +6 -1
  27. metadata +10 -53
  28. data/.gitattributes +0 -3
  29. data/.github/workflows/gouteur.yml +0 -20
  30. data/.github/workflows/lint.yml +0 -29
  31. data/.github/workflows/tests.yml +0 -26
  32. data/.gitignore +0 -33
  33. data/.gouteur.yml +0 -2
  34. data/.rspec +0 -3
  35. data/BENCHMARK.md +0 -90
  36. data/Gemfile +0 -20
  37. data/bin/console +0 -21
  38. data/bin/setup +0 -8
  39. data/character_set.gemspec +0 -24
  40. data/ext/character_set/unicode_casefold_table.h +0 -1438
  41. data/ext/character_set/unicode_casefold_table.h.tmpl +0 -11
  42. data/lib/character_set/ruby_fallback/vendored_set_classes.rb +0 -492
  43. data/tasks/benchmark.rake +0 -20
  44. data/tasks/benchmarks/count_in.rb +0 -13
  45. data/tasks/benchmarks/cover.rb +0 -25
  46. data/tasks/benchmarks/delete_in.rb +0 -29
  47. data/tasks/benchmarks/keep_in.rb +0 -29
  48. data/tasks/benchmarks/scan.rb +0 -13
  49. data/tasks/benchmarks/shared.rb +0 -28
  50. data/tasks/benchmarks/used_by.rb +0 -25
  51. data/tasks/benchmarks/z_add.rb +0 -12
  52. data/tasks/benchmarks/z_delete.rb +0 -12
  53. data/tasks/benchmarks/z_merge.rb +0 -15
  54. data/tasks/benchmarks/z_minmax.rb +0 -12
  55. data/tasks/sync_casefold_data.rake +0 -20
  56. data/tasks/sync_predefined_sets.rake +0 -9
  57. data/tasks/sync_ruby_spec.rake +0 -65
@@ -1,96 +1,258 @@
1
1
  class CharacterSet
2
2
  module RubyFallback
3
+ # Set-like methods, backed by a Hash of codepoints (@__hash) and a
4
+ # memoized, sorted Array of its keys (@__keys) that mutators reset.
3
5
  module SetMethods
4
- (Enumerable.instance_methods -
5
- %i[include? member? to_a] +
6
- %i[empty? hash length size]).each do |mthd|
6
+ # Delegate Enumerable methods to the sorted keys Array. This is faster
7
+ # than the Enumerable implementations that go through #each, and it
8
+ # keeps CharacterSet::Pure free of C-implemented methods.
9
+ (Enumerable.instance_methods - %i[each include? member? to_a]).each do |mthd|
7
10
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
8
- def #{mthd}(*args, &block)
9
- @__set.#{mthd}(*args, &block)
11
+ def #{mthd}(...)
12
+ sorted_keys.#{mthd}(...)
10
13
  end
11
14
  RUBY
12
15
  end
13
16
 
14
- %i[< <= > >= === disjoint? include? intersect? member?
15
- proper_subset? proper_superset? subset? superset?].each do |mthd|
16
- class_eval <<-RUBY, __FILE__, __LINE__ + 1
17
- def #{mthd}(enum, &block)
18
- if enum.is_a?(CharacterSet) || enum.is_a?(CharacterSet::Pure)
19
- enum = enum.instance_variable_get(:@__set)
20
- end
21
- @__set.#{mthd}(enum, &block)
22
- end
23
- RUBY
17
+ def each(&block)
18
+ block or return enum_for(__method__) { size }
19
+ sorted_keys.each(&block)
20
+ self
24
21
  end
25
22
 
26
- %i[<< add add? clear collect! delete delete? delete_if
27
- each filter! map! keep_if reject!
28
- select! subtract].each do |mthd|
29
- class_eval <<-RUBY, __FILE__, __LINE__ + 1
30
- def #{mthd}(*args, &block)
31
- result = @__set.#{mthd}(*args, &block)
32
- result.is_a?(Set) ? self : result
33
- end
34
- RUBY
23
+ def to_a(stringify = false)
24
+ stringify ? sorted_keys.map { |cp| cp.chr('utf-8') } : sorted_keys.dup
35
25
  end
36
26
 
37
- %i[& + - ^ | difference intersection union].each do |mthd|
38
- class_eval <<-RUBY, __FILE__, __LINE__ + 1
39
- def #{mthd}(enum, &block)
40
- if enum.respond_to?(:map)
41
- enum = enum.map { |el| el.is_a?(String) ? el.ord : el }
42
- end
43
- self.class.new(@__set.#{mthd}(enum, &block).to_a)
44
- end
45
- RUBY
27
+ def size
28
+ @__hash.size
46
29
  end
30
+ alias length size
47
31
 
48
- unless RUBY_PLATFORM[/java/i]
49
- def freeze
50
- @__set.to_a
51
- @__set.freeze
52
- super
53
- end
32
+ def empty?
33
+ @__hash.empty?
34
+ end
35
+
36
+ def hash
37
+ @__hash.hash
38
+ end
39
+
40
+ def include?(cp)
41
+ @__hash.key?(cp)
42
+ end
43
+ alias member? include?
44
+ alias === include?
45
+
46
+ def add(cp)
47
+ @__hash[cp] = true
48
+ @__keys = nil
49
+ self
50
+ end
51
+ alias << add
52
+
53
+ def add?(cp)
54
+ assert_not_frozen
55
+ add(cp) unless include?(cp)
56
+ end
57
+
58
+ def delete(cp)
59
+ @__keys = nil if @__hash.delete(cp)
60
+ self
61
+ end
62
+
63
+ def delete?(cp)
64
+ assert_not_frozen
65
+ delete(cp) if include?(cp)
66
+ end
67
+
68
+ def clear
69
+ @__hash.clear
70
+ @__keys = nil
71
+ self
72
+ end
73
+
74
+ def keep_if
75
+ assert_not_frozen
76
+ block_given? or return enum_for(__method__) { size }
77
+ old_size = size
78
+ sorted_keys.each { |cp| @__hash.delete(cp) unless yield(cp) }
79
+ @__keys = nil if size != old_size
80
+ self
81
+ end
82
+
83
+ def delete_if
84
+ assert_not_frozen
85
+ block_given? or return enum_for(__method__) { size }
86
+ keep_if { |cp| !yield(cp) }
54
87
  end
55
88
 
56
89
  def merge(other)
90
+ assert_not_frozen
57
91
  raise ArgumentError, 'pass an Enumerable' unless other.respond_to?(:each)
58
- # pass through #add to use the checks in SetMethodAdapters
59
- other.each { |e| add(e) }
92
+
93
+ if (other_hash = codepoint_hash(other))
94
+ # Members of another CharacterSet are valid codepoints already,
95
+ # so they can go in with one Hash#update instead of n adds.
96
+ @__hash.update(other_hash)
97
+ @__keys = nil
98
+ else
99
+ # pass through #add to use the checks in SetMethodAdapters
100
+ other.each { |e| add(e) }
101
+ end
102
+ self
103
+ end
104
+
105
+ # The operands of the following methods are always CharacterSets,
106
+ # ensured by SetMethodAdapters - but they might be C-backed, so
107
+ # only their public interface is used.
108
+
109
+ def subtract(other)
110
+ other.each { |cp| @__hash.delete(cp) }
111
+ @__keys = nil
60
112
  self
61
113
  end
62
114
 
115
+ def |(other)
116
+ dup.merge(other)
117
+ end
118
+ alias + |
119
+ alias union |
120
+
121
+ def -(other)
122
+ dup.subtract(other)
123
+ end
124
+ alias difference -
125
+
126
+ def &(other)
127
+ result = self.class.new
128
+ # Fresh results have no memoized keys yet, so their Hash can be
129
+ # filled directly.
130
+ result_hash = codepoint_hash(result)
131
+ small, large = size < other.size ? [self, other] : [other, self]
132
+ large = lookup(large)
133
+ small.each { |cp| result_hash[cp] = true if large.include?(cp) }
134
+ result
135
+ end
136
+ alias intersection &
137
+
138
+ def ^(other)
139
+ (self | other) - (self & other)
140
+ end
141
+
142
+ def intersect?(other)
143
+ small, large = size < other.size ? [self, other] : [other, self]
144
+ large = lookup(large)
145
+ small.any? { |cp| large.include?(cp) }
146
+ end
147
+
148
+ def disjoint?(other)
149
+ !intersect?(other)
150
+ end
151
+
152
+ def <=>(other)
153
+ return unless character_set?(other)
154
+
155
+ case size <=> other.size
156
+ when -1 then -1 if proper_subset?(other)
157
+ when +1 then +1 if proper_superset?(other)
158
+ else 0 if self == other
159
+ end
160
+ end
161
+
162
+ def subset?(other)
163
+ assert_character_set(other)
164
+ return false if size > other.size
165
+
166
+ other = lookup(other)
167
+ all? { |cp| other.include?(cp) }
168
+ end
169
+ alias <= subset?
170
+
171
+ def proper_subset?(other)
172
+ assert_character_set(other)
173
+ return false if size >= other.size
174
+
175
+ other = lookup(other)
176
+ all? { |cp| other.include?(cp) }
177
+ end
178
+ alias < proper_subset?
179
+
180
+ def superset?(other)
181
+ assert_character_set(other)
182
+ size >= other.size && other.all? { |cp| @__hash.key?(cp) }
183
+ end
184
+ alias >= superset?
185
+
186
+ def proper_superset?(other)
187
+ assert_character_set(other)
188
+ size > other.size && other.all? { |cp| @__hash.key?(cp) }
189
+ end
190
+ alias > proper_superset?
191
+
63
192
  def ==(other)
64
193
  if equal?(other)
65
194
  true
66
- elsif other.instance_of?(self.class)
67
- @__set == other.instance_variable_get(:@__set)
68
- elsif other.is_a?(CharacterSet) || other.is_a?(CharacterSet::Pure)
69
- size == other.size && other.all? { |cp| @__set.include?(cp) }
195
+ elsif (other_hash = codepoint_hash(other))
196
+ @__hash == other_hash
197
+ elsif character_set?(other)
198
+ size == other.size && other.all? { |cp| @__hash.key?(cp) }
70
199
  else
71
200
  false
72
201
  end
73
202
  end
74
203
 
75
204
  def eql?(other)
76
- return false unless other.is_a?(self.class)
205
+ other.is_a?(self.class) && @__hash.eql?(codepoint_hash(other))
206
+ end
77
207
 
78
- @__set.eql?(other.instance_variable_get(:@__set))
208
+ def freeze
209
+ sorted_keys.freeze
210
+ @__hash.freeze
211
+ super
79
212
  end
80
213
 
81
214
  def initialize_dup(orig)
82
215
  super
83
- @__set = orig.instance_variable_get(:@__set).dup
216
+ @__hash = @__hash.dup
217
+ @__keys = nil # dups are usually mutated, so don't bother copying
84
218
  end
85
219
 
86
- def initialize_clone(orig)
220
+ def initialize_clone(orig, freeze: nil)
87
221
  super
88
- @__set = orig.instance_variable_get(:@__set).clone
222
+ @__hash = @__hash.clone(freeze: freeze)
223
+ @__keys = @__keys&.clone(freeze: freeze)
89
224
  end
90
225
 
91
- def to_a(stringify = false)
92
- result = @__set.to_a
93
- stringify ? result.map { |cp| cp.chr('utf-8') } : result
226
+ private
227
+
228
+ def sorted_keys
229
+ @__keys ||= @__hash.keys.sort!
230
+ end
231
+
232
+ def character_set?(obj)
233
+ obj.is_a?(CharacterSet) ||
234
+ defined?(CharacterSet::Pure) && obj.is_a?(CharacterSet::Pure)
235
+ end
236
+
237
+ def assert_character_set(obj)
238
+ character_set?(obj) or raise ArgumentError, 'value must be a set'
239
+ end
240
+
241
+ def assert_not_frozen
242
+ raise FrozenError, "can't modify frozen #{self.class}" if frozen?
243
+ end
244
+
245
+ # The codepoint Hash of another Ruby-backed CharacterSet, or nil if
246
+ # `other` is not a CharacterSet - or is C-backed and so has no Hash.
247
+ def codepoint_hash(other)
248
+ other.instance_variable_get(:@__hash) if character_set?(other)
249
+ end
250
+
251
+ # The cheapest object that answers #include? for the codepoints of
252
+ # `set`: its Hash if it is Ruby-backed, which skips the argument checks
253
+ # of SetMethodAdapters, otherwise the set itself.
254
+ def lookup(set)
255
+ codepoint_hash(set) || set
94
256
  end
95
257
  end
96
258
  end
@@ -1,8 +1,9 @@
1
1
  require 'character_set/ruby_fallback/set_methods'
2
2
  require 'character_set/ruby_fallback/character_set_methods'
3
- require 'character_set/ruby_fallback/vendored_set_classes'
4
3
 
5
4
  class CharacterSet
5
+ # The RubyFallback is used by non-standard Rubies that can't use
6
+ # the C extension. It is tested in the specs via CharacterSet::Pure.
6
7
  module RubyFallback
7
8
  include CharacterSet::RubyFallback::SetMethods
8
9
  include CharacterSet::RubyFallback::CharacterSetMethods
@@ -12,7 +13,8 @@ class CharacterSet
12
13
  end
13
14
 
14
15
  def initialize(enum = [])
15
- @__set = CharacterSet::RubyFallback::SortedSet.new
16
+ @__hash = {}
17
+ @__keys = nil
16
18
  super
17
19
  end
18
20
  end
@@ -22,7 +22,7 @@ class CharacterSet
22
22
 
23
23
  # Allow some methods to take an Enum just as well as another CharacterSet.
24
24
  # Tested by ruby-spec.
25
- %w[& + - ^ | difference disjoint? intersect? intersection
25
+ %w[& + - ^ | <=> difference disjoint? intersect? intersection
26
26
  subtract union].each do |method|
27
27
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
28
28
  def #{method}(arg)
@@ -82,6 +82,14 @@ class CharacterSet
82
82
  self - self.class.surrogate
83
83
  end
84
84
 
85
+ def marshal_dump
86
+ to_a
87
+ end
88
+
89
+ def marshal_load(data)
90
+ initialize(data)
91
+ end
92
+
85
93
  # CharacterSet-specific stringification methods
86
94
 
87
95
  def to_s(opts = {}, &block)
@@ -164,9 +172,42 @@ class CharacterSet
164
172
  each_with_object({}) { |cp, h| (h[yield(cp)] ||= self.class.new).add(cp) }
165
173
  end
166
174
 
175
+ # Note: Set#divide behavior with a 2-arity block changed in Ruby 4.
176
+ # This implementation has the new, more sensible behavior.
177
+ # https://github.com/ruby/ruby/blob/453a69e/spec/ruby/core/set/divide_spec.rb#L34-L48
167
178
  def divide(&func)
168
- require 'character_set/ruby_fallback/vendored_set_classes'
169
- CharacterSet::RubyFallback::Set.new(to_a).divide(&func)
179
+ func or return enum_for(__method__) { size }
180
+
181
+ klass = defined?(::Set) ? ::Set : ::Array
182
+
183
+ if func.arity == 2
184
+ class << dig = {}
185
+ require 'tsort'
186
+ include TSort
187
+
188
+ alias tsort_each_node each_key
189
+ def tsort_each_child(node, &block)
190
+ fetch(node).each(&block)
191
+ end
192
+ end
193
+
194
+ each do |cp|
195
+ dig[cp] = arr = []
196
+ each { |cp2| arr << cp2 if cp != cp2 && func.call(cp, cp2) }
197
+ end
198
+
199
+ set = klass.new
200
+ dig.each_strongly_connected_component do |css|
201
+ set << self.class.new(css)
202
+ end
203
+ set
204
+ else
205
+ klass.new(classify(&func).values)
206
+ end
207
+ end
208
+
209
+ def join(separator = '')
210
+ to_a(true).join(separator)
170
211
  end
171
212
  RUBY
172
213
 
@@ -1,3 +1,3 @@
1
1
  class CharacterSet
2
- VERSION = '1.7.0'
2
+ VERSION = '1.9.0'
3
3
  end
@@ -4,7 +4,7 @@ class CharacterSet
4
4
  def write(codepoint_ranges, opts = {}, &block)
5
5
  content = codepoint_ranges.map do |range|
6
6
  if range.size > 2 && opts[:abbreviate] != false
7
- bounds = [range.min, range.max]
7
+ bounds = [range.min, range.max] # minmax is slow on some rubies
8
8
  bounds.map { |cp| write_codepoint(cp, opts, &block) }.join('-')
9
9
  else
10
10
  range.map { |cp| write_codepoint(cp, opts, &block) }.join
data/lib/character_set.rb CHANGED
@@ -7,9 +7,14 @@ require 'character_set/shared_methods'
7
7
  require 'character_set/version'
8
8
  require 'character_set/writer'
9
9
 
10
+ # A set of Unicode codepoints with engine-specific storage backends.
10
11
  class CharacterSet
11
12
  begin
12
- require 'character_set/character_set'
13
+ if RUBY_ENGINE == 'jruby'
14
+ require 'character_set/java'
15
+ else
16
+ require 'character_set/character_set' # C extension
17
+ end
13
18
  rescue LoadError
14
19
  require 'character_set/ruby_fallback'
15
20
  prepend RubyFallback
metadata CHANGED
@@ -1,63 +1,38 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: character_set
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.9.0
5
5
  platform: java
6
6
  authors:
7
7
  - Janosch Müller
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2023-05-12 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: range_compressor
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.0'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.0'
27
- description:
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies: []
28
12
  email:
29
13
  - janosch84@gmail.com
30
14
  executables: []
31
15
  extensions: []
32
16
  extra_rdoc_files: []
33
17
  files:
34
- - ".gitattributes"
35
- - ".github/workflows/gouteur.yml"
36
- - ".github/workflows/lint.yml"
37
- - ".github/workflows/tests.yml"
38
- - ".gitignore"
39
- - ".gouteur.yml"
40
- - ".rspec"
41
18
  - ".rubocop.yml"
42
- - BENCHMARK.md
43
19
  - CHANGELOG.md
44
- - Gemfile
45
20
  - LICENSE.txt
46
21
  - README.md
47
22
  - Rakefile
48
- - bin/console
49
- - bin/setup
50
- - character_set.gemspec
51
23
  - ext/character_set/character_set.c
52
24
  - ext/character_set/extconf.rb
53
- - ext/character_set/unicode_casefold_table.h
54
- - ext/character_set/unicode_casefold_table.h.tmpl
25
+ - ext/character_set/java/src/main/java/org/jaynetics/characterset/CharacterSetService.java
26
+ - ext/character_set/java/src/main/java/org/jaynetics/characterset/RubyCharacterSet.java
27
+ - ext/character_set/java/src/main/java/org/jaynetics/characterset/StringOperations.java
55
28
  - lib/character_set.rb
56
29
  - lib/character_set/character.rb
30
+ - lib/character_set/character_set.jar
57
31
  - lib/character_set/core_ext.rb
58
32
  - lib/character_set/core_ext/regexp_ext.rb
59
33
  - lib/character_set/core_ext/string_ext.rb
60
34
  - lib/character_set/expression_converter.rb
35
+ - lib/character_set/java.rb
61
36
  - lib/character_set/parser.rb
62
37
  - lib/character_set/predefined_sets.rb
63
38
  - lib/character_set/predefined_sets/any.cps
@@ -80,31 +55,14 @@ files:
80
55
  - lib/character_set/ruby_fallback.rb
81
56
  - lib/character_set/ruby_fallback/character_set_methods.rb
82
57
  - lib/character_set/ruby_fallback/set_methods.rb
83
- - lib/character_set/ruby_fallback/vendored_set_classes.rb
84
58
  - lib/character_set/set_method_adapters.rb
85
59
  - lib/character_set/shared_methods.rb
86
60
  - lib/character_set/version.rb
87
61
  - lib/character_set/writer.rb
88
- - tasks/benchmark.rake
89
- - tasks/benchmarks/count_in.rb
90
- - tasks/benchmarks/cover.rb
91
- - tasks/benchmarks/delete_in.rb
92
- - tasks/benchmarks/keep_in.rb
93
- - tasks/benchmarks/scan.rb
94
- - tasks/benchmarks/shared.rb
95
- - tasks/benchmarks/used_by.rb
96
- - tasks/benchmarks/z_add.rb
97
- - tasks/benchmarks/z_delete.rb
98
- - tasks/benchmarks/z_merge.rb
99
- - tasks/benchmarks/z_minmax.rb
100
- - tasks/sync_casefold_data.rake
101
- - tasks/sync_predefined_sets.rake
102
- - tasks/sync_ruby_spec.rake
103
62
  homepage: https://github.com/jaynetics/character_set
104
63
  licenses:
105
64
  - MIT
106
65
  metadata: {}
107
- post_install_message:
108
66
  rdoc_options: []
109
67
  require_paths:
110
68
  - lib
@@ -112,15 +70,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
70
  requirements:
113
71
  - - ">="
114
72
  - !ruby/object:Gem::Version
115
- version: 2.1.0
73
+ version: '3.1'
116
74
  required_rubygems_version: !ruby/object:Gem::Requirement
117
75
  requirements:
118
76
  - - ">="
119
77
  - !ruby/object:Gem::Version
120
78
  version: '0'
121
79
  requirements: []
122
- rubygems_version: 3.4.1
123
- signing_key:
80
+ rubygems_version: 4.0.3
124
81
  specification_version: 4
125
82
  summary: Build, read, write and compare sets of Unicode codepoints.
126
83
  test_files: []
data/.gitattributes DELETED
@@ -1,3 +0,0 @@
1
- *.cps linguist-detectable=false
2
- benchmarks/* linguist-detectable=false
3
- spec/* linguist-detectable=false
@@ -1,20 +0,0 @@
1
- name: gouteur
2
-
3
- on: [push, pull_request]
4
-
5
- jobs:
6
- build:
7
- runs-on: ubuntu-latest
8
-
9
- steps:
10
- - uses: actions/checkout@v2
11
- - name: Set up Ruby
12
- uses: ruby/setup-ruby@v1
13
- with:
14
- ruby-version: 2.7
15
- - name: Prepare
16
- run: |
17
- bundle install --jobs 4
18
- bundle exec rake compile
19
- - name: Test
20
- run: bundle exec gouteur
@@ -1,29 +0,0 @@
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
@@ -1,26 +0,0 @@
1
- name: tests
2
-
3
- on:
4
- push:
5
- pull_request:
6
- schedule:
7
- - cron: '11 11 14 * *' # at 11:11 am on the 14th of every month
8
-
9
- jobs:
10
- build:
11
- runs-on: ubuntu-latest
12
-
13
- strategy:
14
- matrix:
15
- ruby: [ '2.2', '2.7', '3.0', '3.1', 'ruby-head', 'jruby-head' ]
16
-
17
- steps:
18
- - uses: actions/checkout@v2
19
- - name: Set up Ruby ${{ matrix.ruby }}
20
- uses: ruby/setup-ruby@v1
21
- with:
22
- ruby-version: ${{ matrix.ruby }}
23
- - name: Install dependencies
24
- run: bundle install --jobs 4
25
- - name: Test with Rake
26
- run: bundle exec rake
data/.gitignore DELETED
@@ -1,33 +0,0 @@
1
- *.bundle
2
- *.gem
3
- *.iml
4
- *.stTheme.cache
5
- *.sublime-project
6
- *.sublime-workspace
7
- *.swp
8
- *.tmlanguage.cache
9
- *.tmPreferences.cache
10
- *~
11
- .byebug_history
12
- .DS_Store
13
- .idea/
14
- .ruby-gemset
15
- .ruby-version
16
- .tags
17
- .tags1
18
- .tool-versions
19
- .vscode
20
- bbin/
21
- binstubs/*
22
- bundler_stubs/*/.yardoc
23
- Gemfile.lock
24
- /.bundle/
25
- /_yardoc/
26
- /coverage/
27
- /doc/
28
- /pkg/
29
- /spec/reports/
30
- /tmp/
31
-
32
- # rspec failure tracking
33
- .rspec_status
data/.gouteur.yml DELETED
@@ -1,2 +0,0 @@
1
- repos:
2
- - uri: https://github.com/jaynetics/js_regex
data/.rspec DELETED
@@ -1,3 +0,0 @@
1
- --format documentation
2
- --color
3
- --require spec_helper