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.
- 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/character_set.jar +0 -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 +10 -53
- 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
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
require_relative './shared'
|
|
2
|
-
|
|
3
|
-
cs = CharacterSet.new(0..0x10FFFF)
|
|
4
|
-
ss = SortedSet.new(0..0x10FFFF)
|
|
5
|
-
|
|
6
|
-
benchmark(
|
|
7
|
-
caption: 'Removing entries',
|
|
8
|
-
cases: {
|
|
9
|
-
'CharacterSet#delete' => -> { cs.delete(rand(0x10FFFF)) },
|
|
10
|
-
'SortedSet#delete' => -> { ss.delete(rand(0x10FFFF)) },
|
|
11
|
-
}
|
|
12
|
-
)
|
data/tasks/benchmarks/z_merge.rb
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
require_relative './shared'
|
|
2
|
-
|
|
3
|
-
cs1 = CharacterSet.new(0...0x88000)
|
|
4
|
-
cs2 = CharacterSet.new(0x88000..0x10FFFF)
|
|
5
|
-
|
|
6
|
-
ss1 = SortedSet.new(0...0x88000)
|
|
7
|
-
ss2 = SortedSet.new(0x88000..0x10FFFF)
|
|
8
|
-
|
|
9
|
-
benchmark(
|
|
10
|
-
caption: 'Merging entries',
|
|
11
|
-
cases: {
|
|
12
|
-
'CharacterSet#merge' => -> { cs1.merge(cs2) },
|
|
13
|
-
'SortedSet#merge' => -> { ss1.merge(ss2) },
|
|
14
|
-
}
|
|
15
|
-
)
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
require_relative './shared'
|
|
2
|
-
|
|
3
|
-
cs = CharacterSet.new(0..0xFFFF)
|
|
4
|
-
ss = SortedSet.new(0..0xFFFF)
|
|
5
|
-
|
|
6
|
-
benchmark(
|
|
7
|
-
caption: 'Getting the min and max',
|
|
8
|
-
cases: {
|
|
9
|
-
'CharacterSet#minmax' => -> { cs.minmax },
|
|
10
|
-
'SortedSet#minmax' => -> { ss.minmax },
|
|
11
|
-
}
|
|
12
|
-
)
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
desc 'Download unicode casefold data and write new C header file'
|
|
2
|
-
task :sync_casefold_data do
|
|
3
|
-
src_path = './CaseFolding.txt'
|
|
4
|
-
dst_path = "#{__dir__}/../ext/character_set/unicode_casefold_table.h"
|
|
5
|
-
|
|
6
|
-
`wget http://www.unicode.org/Public/UNIDATA/CaseFolding.txt`
|
|
7
|
-
|
|
8
|
-
mapping = File.foreach(src_path).each_with_object({}) do |line, hash|
|
|
9
|
-
from, type, to = line.split(/\s*;\s*/).first(3)
|
|
10
|
-
# type 'C' stands for 'common', excludes mappings to multiple chars
|
|
11
|
-
hash[from] = to if type == 'C'
|
|
12
|
-
end.sort
|
|
13
|
-
|
|
14
|
-
content = File.read(dst_path + '.tmpl')
|
|
15
|
-
.sub(/(CASEFOLD_COUNT )0/, "\\1#{mapping.count}")
|
|
16
|
-
.sub('{}', ['{', mapping.map { |a, b| "{0x#{a},0x#{b}}," }, '}'].join("\n"))
|
|
17
|
-
|
|
18
|
-
File.write(dst_path, content)
|
|
19
|
-
File.unlink(src_path)
|
|
20
|
-
end
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
desc 'Update codepoint data for predefined sets, based on Onigmo'
|
|
2
|
-
task :sync_predefined_sets do
|
|
3
|
-
%w[assigned emoji whitespace].each do |prop|
|
|
4
|
-
require 'regexp_property_values'
|
|
5
|
-
ranges = RegexpPropertyValues[prop].matched_ranges
|
|
6
|
-
str = ranges.map { |r| "#{r.min.to_s(16)},#{r.max.to_s(16)}\n" }.join.upcase
|
|
7
|
-
File.write("#{__dir__}/../lib/character_set/predefined_sets/#{prop}.cps", str, mode: 'w')
|
|
8
|
-
end
|
|
9
|
-
end
|
data/tasks/sync_ruby_spec.rake
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
desc 'Download relevant ruby/spec tests, adapt to CharacterSet and its variants'
|
|
2
|
-
task :sync_ruby_spec do
|
|
3
|
-
require 'fileutils'
|
|
4
|
-
|
|
5
|
-
variants = {
|
|
6
|
-
'CharacterSet' => "#{__dir__}/../spec/ruby-spec/library/character_set",
|
|
7
|
-
'CharacterSet::Pure' => "#{__dir__}/../spec/ruby-spec/library/character_set_pure",
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
# download fresh specs from ruby/spec repository
|
|
11
|
-
variants.each do |_, dir|
|
|
12
|
-
FileUtils.rm_rf(dir)
|
|
13
|
-
`svn export https://github.com/ruby/spec/trunk/library/set/sortedset #{dir}`
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
# make copies for each CharacterSet variant
|
|
17
|
-
base = variants.first[1]
|
|
18
|
-
variants.each_value { |dir| FileUtils.copy_entry(base, dir) unless dir == base }
|
|
19
|
-
|
|
20
|
-
# adapt specs to work with CharacterSet
|
|
21
|
-
variants.each do |class_name, dir|
|
|
22
|
-
Dir["#{dir}/**/*.rb"].each do |spec|
|
|
23
|
-
# ignore some tests that do not apply or are covered otherwise
|
|
24
|
-
if spec =~ %r{/(classify|divide|flatten|initialize|pretty_print)}
|
|
25
|
-
File.delete(spec)
|
|
26
|
-
next
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
adapted_content =
|
|
30
|
-
File.read(spec).
|
|
31
|
-
# adapt class name
|
|
32
|
-
gsub('SortedSet', (spec['/shared/'] ? 'variant' : class_name)).
|
|
33
|
-
gsub(/(it_behaves_like :[^,\n]+), (:[^,\n]+)/, "\\1, #{class_name}, \\2").
|
|
34
|
-
# get shared specs from a single shared dir at the parent level
|
|
35
|
-
gsub(/(require_relative ['"])(shared\/)/, '\1../\2').
|
|
36
|
-
# make 'mspec' syntax rspec-compatible
|
|
37
|
-
gsub(/describe (.*), shared.*$/, 'shared_examples \1 do |variant, method|').
|
|
38
|
-
gsub(/be_(false|true)/, 'be \1').
|
|
39
|
-
gsub('stub!', 'stub').
|
|
40
|
-
gsub('mock', 'double').
|
|
41
|
-
gsub('@method', 'method').
|
|
42
|
-
# remove unneeded requires
|
|
43
|
-
gsub(/require 'set'\n/, '').
|
|
44
|
-
gsub(/require.*spec_helper.*\n/, '').
|
|
45
|
-
gsub(/\A\n+/, '').
|
|
46
|
-
# make examples use Integers/codepoints
|
|
47
|
-
gsub(/1\.0|"cat"|"dog"|"hello"|"test"/, '0').
|
|
48
|
-
gsub('"one"', '1').
|
|
49
|
-
gsub('"two"', '2').
|
|
50
|
-
gsub('"three"', '3').
|
|
51
|
-
gsub('"four"', '4').
|
|
52
|
-
gsub('"five"', '5').
|
|
53
|
-
gsub(/x.(size|length) == 3/, 'x != 3').
|
|
54
|
-
gsub(/x.(size|length) != 3/, 'x == 3').
|
|
55
|
-
gsub(/(add)\(\d\)(\.to_a \}.should raise)/, '\1(:foo)\2')
|
|
56
|
-
|
|
57
|
-
File.open(spec, 'w') { |f| f.puts adapted_content }
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
# keep only one copy of the shared specs, at the parent level
|
|
62
|
-
FileUtils.rm_rf(base + '/../shared')
|
|
63
|
-
FileUtils.mv(base + '/shared', base + '/../')
|
|
64
|
-
variants.each_value { |dir| FileUtils.rm_rf(dir + '/shared') }
|
|
65
|
-
end
|