character_set 1.7.0 → 1.9.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 +4 -4
- data/.rubocop.yml +4 -1
- data/CHANGELOG.md +19 -0
- data/LICENSE.txt +1 -1
- data/README.md +4 -3
- data/Rakefile +12 -5
- data/ext/character_set/character_set.c +91 -67
- data/ext/character_set/java/src/main/java/org/jaynetics/characterset/CharacterSetService.java +15 -0
- data/ext/character_set/java/src/main/java/org/jaynetics/characterset/RubyCharacterSet.java +493 -0
- data/ext/character_set/java/src/main/java/org/jaynetics/characterset/StringOperations.java +138 -0
- data/lib/character_set/core_ext/regexp_ext.rb +8 -0
- data/lib/character_set/expression_converter.rb +37 -54
- data/lib/character_set/java.rb +6 -0
- data/lib/character_set/parser.rb +5 -3
- data/lib/character_set/predefined_sets/assigned.cps +95 -58
- data/lib/character_set/predefined_sets/emoji.cps +9 -11
- data/lib/character_set/predefined_sets.rb +1 -1
- data/lib/character_set/ruby_fallback/character_set_methods.rb +7 -14
- data/lib/character_set/ruby_fallback/set_methods.rb +215 -53
- data/lib/character_set/ruby_fallback.rb +4 -2
- data/lib/character_set/set_method_adapters.rb +1 -1
- data/lib/character_set/shared_methods.rb +43 -2
- data/lib/character_set/version.rb +1 -1
- data/lib/character_set/writer.rb +1 -1
- data/lib/character_set.rb +6 -1
- metadata +8 -38
- data/.gitattributes +0 -3
- data/.github/workflows/gouteur.yml +0 -20
- data/.github/workflows/lint.yml +0 -29
- data/.github/workflows/tests.yml +0 -26
- data/.gitignore +0 -33
- data/.gouteur.yml +0 -2
- data/.rspec +0 -3
- data/BENCHMARK.md +0 -90
- data/Gemfile +0 -20
- data/bin/console +0 -21
- data/bin/setup +0 -8
- data/character_set.gemspec +0 -24
- data/ext/character_set/unicode_casefold_table.h +0 -1438
- data/ext/character_set/unicode_casefold_table.h.tmpl +0 -11
- data/lib/character_set/ruby_fallback/vendored_set_classes.rb +0 -492
- data/tasks/benchmark.rake +0 -20
- data/tasks/benchmarks/count_in.rb +0 -13
- data/tasks/benchmarks/cover.rb +0 -25
- data/tasks/benchmarks/delete_in.rb +0 -29
- data/tasks/benchmarks/keep_in.rb +0 -29
- data/tasks/benchmarks/scan.rb +0 -13
- data/tasks/benchmarks/shared.rb +0 -28
- data/tasks/benchmarks/used_by.rb +0 -25
- data/tasks/benchmarks/z_add.rb +0 -12
- data/tasks/benchmarks/z_delete.rb +0 -12
- data/tasks/benchmarks/z_merge.rb +0 -15
- data/tasks/benchmarks/z_minmax.rb +0 -12
- data/tasks/sync_casefold_data.rake +0 -20
- data/tasks/sync_predefined_sets.rake +0 -9
- data/tasks/sync_ruby_spec.rake +0 -65
data/BENCHMARK.md
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
Results of `rake:benchmark` on ruby 3.2.0dev (2022-02-14T14:35:54Z master 26187a8520) [arm64-darwin21]
|
|
2
|
-
|
|
3
|
-
```
|
|
4
|
-
Counting non-letters
|
|
5
|
-
|
|
6
|
-
CharacterSet#count_in: 14627506.2 i/s
|
|
7
|
-
String#count: 3859777.0 i/s - 3.79x slower
|
|
8
|
-
```
|
|
9
|
-
```
|
|
10
|
-
Detecting non-whitespace
|
|
11
|
-
|
|
12
|
-
CharacterSet#cover?: 17241902.8 i/s
|
|
13
|
-
Regexp#match?: 12971122.6 i/s - 1.33x slower
|
|
14
|
-
```
|
|
15
|
-
```
|
|
16
|
-
Detecting non-letters
|
|
17
|
-
|
|
18
|
-
CharacterSet#cover?: 17243472.3 i/s
|
|
19
|
-
Regexp#match?: 7957626.9 i/s - 2.17x slower
|
|
20
|
-
```
|
|
21
|
-
```
|
|
22
|
-
Removing ASCII whitespace
|
|
23
|
-
|
|
24
|
-
CharacterSet#delete_in: 6190975.7 i/s
|
|
25
|
-
String#tr: 4722716.6 i/s - 1.31x slower
|
|
26
|
-
String#gsub: 214239.5 i/s - 28.90x slower
|
|
27
|
-
```
|
|
28
|
-
```
|
|
29
|
-
Removing whitespace, emoji and umlauts
|
|
30
|
-
|
|
31
|
-
CharacterSet#delete_in: 5890471.8 i/s
|
|
32
|
-
String#tr: 348506.8 i/s - 16.90x slower
|
|
33
|
-
String#gsub: 318268.3 i/s - 18.51x slower
|
|
34
|
-
```
|
|
35
|
-
```
|
|
36
|
-
Removing non-whitespace
|
|
37
|
-
|
|
38
|
-
CharacterSet#keep_in: 7396898.0 i/s
|
|
39
|
-
String#gsub: 208809.7 i/s - 35.42x slower
|
|
40
|
-
String#tr: 13.1 i/s - 564682.50x slower
|
|
41
|
-
```
|
|
42
|
-
```
|
|
43
|
-
Keeping only emoji
|
|
44
|
-
|
|
45
|
-
CharacterSet#keep_in: 7022741.1 i/s
|
|
46
|
-
String#gsub: 180939.6 i/s - 38.81x slower
|
|
47
|
-
String#tr: 13.1 i/s - 536724.50x slower
|
|
48
|
-
```
|
|
49
|
-
```
|
|
50
|
-
Extracting emoji to an Array
|
|
51
|
-
|
|
52
|
-
CharacterSet#scan: 3023176.8 i/s
|
|
53
|
-
String#scan: 893225.8 i/s - 3.38x slower
|
|
54
|
-
```
|
|
55
|
-
```
|
|
56
|
-
Detecting whitespace
|
|
57
|
-
|
|
58
|
-
CharacterSet#used_by?: 17284025.9 i/s
|
|
59
|
-
Regexp#match?: 11847064.5 i/s - 1.46x slower
|
|
60
|
-
```
|
|
61
|
-
```
|
|
62
|
-
Detecting emoji in a large string
|
|
63
|
-
|
|
64
|
-
CharacterSet#used_by?: 341386.1 i/s
|
|
65
|
-
Regexp#match?: 183121.6 i/s - 1.86x slower
|
|
66
|
-
```
|
|
67
|
-
```
|
|
68
|
-
Adding entries
|
|
69
|
-
|
|
70
|
-
CharacterSet#add: 4989762.3 i/s
|
|
71
|
-
SortedSet#add: 1157911.7 i/s - 4.31x slower
|
|
72
|
-
```
|
|
73
|
-
```
|
|
74
|
-
Removing entries
|
|
75
|
-
|
|
76
|
-
CharacterSet#delete: 4996703.6 i/s
|
|
77
|
-
SortedSet#delete: 4177401.5 i/s - same-ish
|
|
78
|
-
```
|
|
79
|
-
```
|
|
80
|
-
Merging entries
|
|
81
|
-
|
|
82
|
-
CharacterSet#merge: 666.7 i/s
|
|
83
|
-
SortedSet#merge: 4.0 i/s - 167.84x slower
|
|
84
|
-
```
|
|
85
|
-
```
|
|
86
|
-
Getting the min and max
|
|
87
|
-
|
|
88
|
-
CharacterSet#minmax: 1596470.9 i/s
|
|
89
|
-
SortedSet#minmax: 866.4 i/s - 1842.74x slower
|
|
90
|
-
```
|
data/Gemfile
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
source "https://rubygems.org"
|
|
2
|
-
|
|
3
|
-
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
|
4
|
-
|
|
5
|
-
# Specify your gem's dependencies in character_set.gemspec
|
|
6
|
-
gemspec
|
|
7
|
-
|
|
8
|
-
gem 'benchmark-ips', '~> 2.7'
|
|
9
|
-
gem 'get_process_mem', '~> 0.2.3'
|
|
10
|
-
gem 'rake', '~> 13.0'
|
|
11
|
-
gem 'rake-compiler', '~> 1.1'
|
|
12
|
-
gem 'range_compressor', '~> 1.0'
|
|
13
|
-
gem 'regexp_parser', '~> 2.1'
|
|
14
|
-
gem 'regexp_property_values', '~> 1.0'
|
|
15
|
-
gem 'rspec', '~> 3.8'
|
|
16
|
-
if RUBY_VERSION.to_f >= 2.7
|
|
17
|
-
gem 'codecov', '~> 0.2.12'
|
|
18
|
-
gem 'gouteur', '~> 1.0.0'
|
|
19
|
-
gem 'rubocop', '~> 1.8'
|
|
20
|
-
end
|
data/bin/console
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
require 'bundler/setup'
|
|
4
|
-
|
|
5
|
-
`bundle exec rake compile`
|
|
6
|
-
|
|
7
|
-
require 'character_set'
|
|
8
|
-
require 'character_set/core_ext'
|
|
9
|
-
require 'character_set/pure'
|
|
10
|
-
|
|
11
|
-
require 'regexp_property_values'
|
|
12
|
-
|
|
13
|
-
CS = CharacterSet
|
|
14
|
-
CP = CharacterSet::Pure
|
|
15
|
-
PV = RegexpPropertyValues
|
|
16
|
-
|
|
17
|
-
require 'benchmark'
|
|
18
|
-
def m(&block); Benchmark.measure(&block); end
|
|
19
|
-
|
|
20
|
-
require "irb"
|
|
21
|
-
IRB.start(__FILE__)
|
data/bin/setup
DELETED
data/character_set.gemspec
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
lib = File.expand_path('../lib', __FILE__)
|
|
2
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
3
|
-
|
|
4
|
-
require 'character_set/version'
|
|
5
|
-
|
|
6
|
-
Gem::Specification.new do |s|
|
|
7
|
-
s.name = 'character_set'
|
|
8
|
-
s.version = CharacterSet::VERSION
|
|
9
|
-
s.authors = ['Janosch Müller']
|
|
10
|
-
s.email = ['janosch84@gmail.com']
|
|
11
|
-
|
|
12
|
-
s.summary = 'Build, read, write and compare sets of Unicode codepoints.'
|
|
13
|
-
s.homepage = 'https://github.com/jaynetics/character_set'
|
|
14
|
-
s.license = 'MIT'
|
|
15
|
-
|
|
16
|
-
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
17
|
-
f.match(%r{^(test|spec|features)/})
|
|
18
|
-
end
|
|
19
|
-
s.require_paths = ['lib']
|
|
20
|
-
|
|
21
|
-
s.extensions = %w[ext/character_set/extconf.rb]
|
|
22
|
-
|
|
23
|
-
s.required_ruby_version = '>= 2.1.0'
|
|
24
|
-
end
|