regexp_property_values 1.5.1-java → 1.5.2-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/CHANGELOG.md +6 -0
- data/Gemfile +1 -1
- data/README.md +2 -0
- data/bin/console +1 -0
- data/ext/regexp_property_values/regexp_property_values.c +42 -15
- data/lib/regexp_property_values/value/ext_adapter.rb +8 -2
- data/lib/regexp_property_values/version.rb +1 -1
- data/regexp_property_values.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 90678821cd4aa4d97e9354fa51582ac7e23c57c7f84f897338200ba9b17ac67d
|
4
|
+
data.tar.gz: b8d8f3a29eae253c8a58d9f8e3ec7a481c6f6007be83602fec122ab27b472646
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f43330b2f6d16d9ec879b128909477e2fd5e617ae96266f36fd1373c7795af1912d7b88af7c998b87d5df41449855b1b41c5cd3821f3bffd6c0331a3c14db77
|
7
|
+
data.tar.gz: ec20a5e4bbd837d3f5be01333fa0c5969549ad90d55ff50ad5545fcc86383969f7b9e018b5ef33d882e8d0818e904599f089ad3919e4c13774ea404e261f7b20
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,12 @@ 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.5.2] - 2024-05-20
|
8
|
+
|
9
|
+
### Fixed
|
10
|
+
- fixed `#matched_characters` for properties containing surrogates
|
11
|
+
- improved speed of `#matched_codepoints`
|
12
|
+
|
7
13
|
## [1.5.1] - 2024-01-06
|
8
14
|
|
9
15
|
### Fixed
|
data/Gemfile
CHANGED
@@ -5,7 +5,7 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
|
|
5
5
|
# Specify your gem's dependencies in regexp_property_values.gemspec
|
6
6
|
gemspec
|
7
7
|
|
8
|
-
gem 'character_set', '~> 1.
|
8
|
+
gem 'character_set', '~> 1.8.0'
|
9
9
|
gem 'rake', '~> 13.0'
|
10
10
|
gem 'rake-compiler', '~> 1.0'
|
11
11
|
gem 'range_compressor', '~> 1.0'
|
data/README.md
CHANGED
@@ -34,6 +34,8 @@ PV['foobar'].supported_by_current_ruby? # => false
|
|
34
34
|
PV['AHex'].matched_characters # => %w[0 1 2 3 4 5 6 7 8 9 A B C ...]
|
35
35
|
PV['AHex'].matched_codepoints # => [48, 49, 50, ...]
|
36
36
|
PV['AHex'].matched_ranges # => [48..57, 65..70, 97..102]
|
37
|
+
# Note: #matched_characters is slow for large properties and you
|
38
|
+
# may not want to use it in time-critical code. It also omits surrogates.
|
37
39
|
|
38
40
|
PV['foobar'].matched_ranges # => RegexpPropertyValues::Error
|
39
41
|
```
|
data/bin/console
CHANGED
@@ -2,11 +2,13 @@
|
|
2
2
|
#include "ruby/encoding.h"
|
3
3
|
#include "ruby/oniguruma.h" // still in recent rubies f. backwards compatibility
|
4
4
|
|
5
|
-
static int prop_name_to_ctype(
|
5
|
+
static int prop_name_to_ctype(VALUE arg, rb_encoding *enc)
|
6
6
|
{
|
7
|
+
char *name;
|
7
8
|
UChar *uname;
|
8
9
|
int ctype;
|
9
10
|
|
11
|
+
name = StringValueCStr(arg);
|
10
12
|
uname = (UChar *)name;
|
11
13
|
ctype = ONIGENC_PROPERTY_NAME_TO_CTYPE(enc, uname, uname + strlen(name));
|
12
14
|
if (ctype < 0)
|
@@ -15,13 +17,26 @@ static int prop_name_to_ctype(char *name, rb_encoding *enc)
|
|
15
17
|
return ctype;
|
16
18
|
}
|
17
19
|
|
18
|
-
|
20
|
+
const OnigCodePoint *get_onig_ranges(VALUE prop_name)
|
21
|
+
{
|
22
|
+
int ctype;
|
23
|
+
const OnigCodePoint *ranges;
|
24
|
+
OnigCodePoint sb_out;
|
25
|
+
rb_encoding *enc;
|
26
|
+
|
27
|
+
enc = rb_utf8_encoding();
|
28
|
+
ctype = prop_name_to_ctype(prop_name, enc);
|
29
|
+
ONIGENC_GET_CTYPE_CODE_RANGE(enc, ctype, &sb_out, &ranges);
|
30
|
+
return ranges;
|
31
|
+
}
|
32
|
+
|
33
|
+
VALUE onig_ranges_to_rb_ranges(const OnigCodePoint *onig_ranges)
|
19
34
|
{
|
20
35
|
unsigned int range_count, i;
|
21
36
|
VALUE result, sub_range;
|
22
37
|
|
23
38
|
range_count = onig_ranges[0];
|
24
|
-
result =
|
39
|
+
result = rb_ary_new_capa(range_count);
|
25
40
|
|
26
41
|
for (i = 0; i < range_count; i++)
|
27
42
|
{
|
@@ -34,24 +49,35 @@ VALUE onig_ranges_to_rb(const OnigCodePoint *onig_ranges)
|
|
34
49
|
return result;
|
35
50
|
}
|
36
51
|
|
37
|
-
VALUE
|
52
|
+
VALUE onig_ranges_to_rb_integers(const OnigCodePoint *onig_ranges)
|
38
53
|
{
|
39
|
-
int
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
54
|
+
unsigned int range_count, i, beg, end, j;
|
55
|
+
VALUE result;
|
56
|
+
|
57
|
+
range_count = onig_ranges[0];
|
58
|
+
result = rb_ary_new();
|
44
59
|
|
45
|
-
|
46
|
-
|
47
|
-
|
60
|
+
for (i = 0; i < range_count; i++)
|
61
|
+
{
|
62
|
+
beg = onig_ranges[(i * 2) + 1];
|
63
|
+
end = onig_ranges[(i * 2) + 2];
|
64
|
+
for (j = beg; j <= end; j++)
|
65
|
+
{
|
66
|
+
rb_ary_push(result, INT2FIX(j));
|
67
|
+
}
|
68
|
+
}
|
69
|
+
|
70
|
+
return result;
|
48
71
|
}
|
49
72
|
|
50
73
|
VALUE method_matched_ranges(VALUE self, VALUE arg)
|
51
74
|
{
|
52
|
-
|
53
|
-
|
54
|
-
|
75
|
+
return onig_ranges_to_rb_ranges(get_onig_ranges(arg));
|
76
|
+
}
|
77
|
+
|
78
|
+
VALUE method_matched_codepoints(VALUE self, VALUE arg)
|
79
|
+
{
|
80
|
+
return onig_ranges_to_rb_integers(get_onig_ranges(arg));
|
55
81
|
}
|
56
82
|
|
57
83
|
void Init_regexp_property_values()
|
@@ -63,4 +89,5 @@ void Init_regexp_property_values()
|
|
63
89
|
VALUE module;
|
64
90
|
module = rb_define_module("OnigRegexpPropertyHelper");
|
65
91
|
rb_define_singleton_method(module, "matched_ranges", method_matched_ranges, 1);
|
92
|
+
rb_define_singleton_method(module, "matched_codepoints", method_matched_codepoints, 1);
|
66
93
|
}
|
@@ -2,11 +2,17 @@ module RegexpPropertyValues
|
|
2
2
|
class Value
|
3
3
|
module ExtAdapter
|
4
4
|
def matched_characters
|
5
|
-
|
5
|
+
acc = []
|
6
|
+
matched_codepoints.each do |cp|
|
7
|
+
acc << cp.chr('utf-8') if cp < 0xD800 || cp > 0xDFFF
|
8
|
+
end
|
9
|
+
acc
|
6
10
|
end
|
7
11
|
|
8
12
|
def matched_codepoints
|
9
|
-
|
13
|
+
OnigRegexpPropertyHelper.matched_codepoints(name)
|
14
|
+
rescue ArgumentError
|
15
|
+
raise_unsupported_or_unknown_error
|
10
16
|
end
|
11
17
|
|
12
18
|
def matched_ranges
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: regexp_property_values
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.2
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Janosch Müller
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-05-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: range_compressor
|
@@ -67,14 +67,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
67
67
|
requirements:
|
68
68
|
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 2.
|
70
|
+
version: 2.1.0
|
71
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '0'
|
76
76
|
requirements: []
|
77
|
-
rubygems_version: 3.5.
|
77
|
+
rubygems_version: 3.5.3
|
78
78
|
signing_key:
|
79
79
|
specification_version: 4
|
80
80
|
summary: Inspect property values supported by Ruby's regex engine
|