character_set 1.1.0-java → 1.1.1-java

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: 0fece5a2996a5fc0d52e31fa16768258de696a23a056c9ce18c73f14b0f1b43d
4
- data.tar.gz: 5d10e4b4039ff533d18dd30978fb3f225b585fb9f321f44ac151fb8a8965b6c5
3
+ metadata.gz: 5131673e07f2c626253f2b095622872c22f7064cbf46d1a8aef699dcb448c5a1
4
+ data.tar.gz: 45300c3e00fe0940b71c6caad8a679dc0b1551d507b7fbc693d1c9668c5dad65
5
5
  SHA512:
6
- metadata.gz: ebf2dbbdfc0c0200ea69cea53491428023875854c3d6f71c8583d32217401b7ceecca1709b7aab3a443c1cd175ac1e5ab57a1e73be336e4a31278ac1a10e8a58
7
- data.tar.gz: d9452b03bbb32ee36f8d2d0f7fe158626cc35a7c34a1c21ba07487dd8afe324d499573a043c94a1762610db73f4ff8ffaf02e459f60ed067603c9ac4fafa1cdc
6
+ metadata.gz: 251f684a1f720b164041f66489288f8848183f39038fe8d975564d9ec87dd74ad45d4517bc89ed883a3ee7ff672b97d4a65d37ac2e9c8fd1d1e40d3c3717dcfd
7
+ data.tar.gz: e1a283f28e72e87c29e81e774059db63766bd2c5a912b66e9b56d047286fd0d9e272a8717c1b5832308ca3004160ed2796f854ad56ce05f36bcac2cb1e7661e8
@@ -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.1.1] - 2018-09-24
8
+
9
+ ### Fixed
10
+ - improved messages for missing optional dependencies
11
+ - made `range_compressor` an optional dependency as it is almost never needed
12
+
7
13
  ## [1.1.0] - 2018-09-21
8
14
 
9
15
  ### Added
data/README.md CHANGED
@@ -160,6 +160,8 @@ set.to_s(abbreviate: false) # => "abc\u0258\u{1F929}"
160
160
  set.to_s_with_surrogate_alternation # => '(?:[\u0258]|\ud83e\udd29)'
161
161
  ```
162
162
 
163
+ Note: If you run JRuby or another Ruby without C support, you will also need to install [`range_compressor`](https://github.com/janosch-x/range_compressor) for these writing operations.
164
+
163
165
  ### Unicode plane methods
164
166
 
165
167
  There are some methods to check for planes and to handle [BMP](https://en.wikipedia.org/wiki/Plane_%28Unicode%29#Basic_Multilingual_Plane) and astral parts:
@@ -22,13 +22,12 @@ Gem::Specification.new do |s|
22
22
 
23
23
  s.required_ruby_version = '>= 2.1.0'
24
24
 
25
- s.add_dependency 'range_compressor', '~> 1.0'
26
-
27
25
  s.add_development_dependency 'benchmark-ips', '~> 2.7'
28
26
  s.add_development_dependency 'bundler', '~> 1.16'
29
- s.add_development_dependency 'rake', '~> 10.0'
27
+ s.add_development_dependency 'rake', '~> 12.0'
30
28
  s.add_development_dependency 'rake-compiler', '~> 1.0'
29
+ s.add_development_dependency 'range_compressor', '~> 1.0'
31
30
  s.add_development_dependency 'regexp_parser', '~> 1.1'
32
- s.add_development_dependency 'regexp_property_values', '~> 0.3.2'
33
- s.add_development_dependency 'rspec', '~> 3.0'
31
+ s.add_development_dependency 'regexp_property_values', '~> 0.3.4'
32
+ s.add_development_dependency 'rspec', '~> 3.8'
34
33
  end
@@ -5,7 +5,7 @@ class CharacterSet
5
5
  Error = Class.new(ArgumentError)
6
6
 
7
7
  def convert(expression)
8
- @regexp_parser_required ||= require 'regexp_parser'
8
+ CharacterSet.require_optional_dependency('regexp_parser')
9
9
 
10
10
  case expression
11
11
  when Regexp::Expression::Root
@@ -31,7 +31,7 @@ class CharacterSet
31
31
  end
32
32
 
33
33
  def ranges
34
- @range_compressor_required ||= require 'range_compressor'
34
+ CharacterSet.require_optional_dependency('range_compressor')
35
35
  RangeCompressor.compress(self)
36
36
  end
37
37
 
@@ -8,33 +8,55 @@ class CharacterSet
8
8
  module SharedMethods
9
9
  def self.included(klass)
10
10
  klass.class_eval <<-RUBY, __FILE__, __LINE__ + 1
11
- def self.[](*args)
12
- new(Array(args))
13
- end
11
+ LoadError = Class.new(::LoadError)
14
12
 
15
- def self.parse(string)
16
- codepoints = Parser.codepoints_from_bracket_expression(string)
17
- result = new(codepoints)
18
- string.start_with?('[^') ? result.inversion : result
19
- end
13
+ class << self
14
+ def [](*args)
15
+ new(Array(args))
16
+ end
20
17
 
21
- def self.of_property(property_name)
22
- @regexp_property_values_required ||= require 'regexp_property_values'
18
+ def parse(string)
19
+ codepoints = Parser.codepoints_from_bracket_expression(string)
20
+ result = new(codepoints)
21
+ string.start_with?('[^') ? result.inversion : result
22
+ end
23
23
 
24
- property = RegexpPropertyValues[property_name.to_s]
25
- from_ranges(*property.matched_ranges)
26
- end
24
+ def of_property(property_name)
25
+ require_optional_dependency('regexp_property_values')
27
26
 
28
- def self.of_regexp(regexp)
29
- @regexp_parser_required ||= require 'regexp_parser'
27
+ property = RegexpPropertyValues[property_name.to_s]
28
+ from_ranges(*property.matched_ranges)
29
+ end
30
30
 
31
- root = ::Regexp::Parser.parse(regexp)
32
- of_expression(root)
33
- end
31
+ def of_regexp(regexp)
32
+ require_optional_dependency('regexp_parser')
34
33
 
35
- def self.of_expression(expression)
36
- ExpressionConverter.convert(expression)
37
- end
34
+ root = ::Regexp::Parser.parse(regexp)
35
+ of_expression(root)
36
+ end
37
+
38
+ def of_expression(expression)
39
+ ExpressionConverter.convert(expression)
40
+ end
41
+
42
+ def require_optional_dependency(name)
43
+ required_optional_dependencies[name] ||= begin
44
+ require name
45
+ true
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 '\
52
+ "'\#{name}' to use the method `\#{method}'."
53
+ end
54
+ end
55
+
56
+ def required_optional_dependencies
57
+ @required_optional_dependencies ||= {}
58
+ end
59
+ end # class << self
38
60
 
39
61
  def initialize(enumerable = [])
40
62
  merge(Parser.codepoints_from_enumerable(enumerable))
@@ -150,6 +172,6 @@ class CharacterSet
150
172
  ext_inversion(include_surrogates, upto)
151
173
  end
152
174
  RUBY
153
- end
154
- end
175
+ end # self.included
176
+ end # SharedMethods
155
177
  end
@@ -1,3 +1,3 @@
1
1
  class CharacterSet
2
- VERSION = '1.1.0'
2
+ VERSION = '1.1.1'
3
3
  end
metadata CHANGED
@@ -1,73 +1,73 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: character_set
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
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: 2018-09-21 00:00:00.000000000 Z
11
+ date: 2018-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: range_compressor
14
+ name: benchmark-ips
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.0'
20
- type: :runtime
19
+ version: '2.7'
20
+ type: :development
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: '1.0'
26
+ version: '2.7'
27
27
  - !ruby/object:Gem::Dependency
28
- name: benchmark-ips
28
+ name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.7'
33
+ version: '1.16'
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: '2.7'
40
+ version: '1.16'
41
41
  - !ruby/object:Gem::Dependency
42
- name: bundler
42
+ name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '1.16'
47
+ version: '12.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '1.16'
54
+ version: '12.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rake
56
+ name: rake-compiler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '1.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: '10.0'
68
+ version: '1.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rake-compiler
70
+ name: range_compressor
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
@@ -100,28 +100,28 @@ dependencies:
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 0.3.2
103
+ version: 0.3.4
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: 0.3.2
110
+ version: 0.3.4
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '3.0'
117
+ version: '3.8'
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: '3.0'
124
+ version: '3.8'
125
125
  description:
126
126
  email:
127
127
  - janosch84@gmail.com