chars 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog.md +7 -0
- data/Gemfile +1 -0
- data/LICENSE.txt +1 -1
- data/README.md +76 -48
- data/Rakefile +1 -1
- data/chars.gemspec +1 -0
- data/gemspec.yml +8 -2
- data/lib/chars/char_set.rb +68 -110
- data/lib/chars/chars.rb +54 -18
- data/lib/chars/extensions/integer.rb +34 -17
- data/lib/chars/extensions/string.rb +34 -17
- data/lib/chars/version.rb +1 -1
- data/spec/char_set_spec.rb +200 -91
- metadata +13 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6257e8d2fa2f62cc364fc2e0ba901d777963476968264dd7747bc4407e5ff54c
|
4
|
+
data.tar.gz: 16f5ecc2f44e8265869aac4946a64cacda2ae8dcdae3b669081a48d34f034f4e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebaf16c18de6b000b6219bf4afe7142926e24293b6b1e62214f937c51c5bdf7f5ffa7f46eecb151e1da044f7b49e1479b7d2cc947a6e20fa2a586f28b4a8a525
|
7
|
+
data.tar.gz: 4c9c98dcbab77b201b86fc32a628575e4b0ebc03608c50c7591b51a70821127778ced5122f57de846c7c863440fa0e9555fe7bfd2940a913e494a929c74a513e
|
data/ChangeLog.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
### 0.2.4 / 2021-10-22
|
2
|
+
|
3
|
+
* Require [ruby] >= 2.0.0.
|
4
|
+
* Added {Chars::CharSet#initialize_copy} to prevent leaking characters
|
5
|
+
between copied {Chars::CharSet} objects.
|
6
|
+
|
1
7
|
### 0.2.3 / 2020-12-25
|
2
8
|
|
3
9
|
* Change {Chars::CharSet} to inherit from `Set`, instead of `SortedSet`.
|
@@ -66,3 +72,4 @@
|
|
66
72
|
belongs to a certain character set.
|
67
73
|
* Supports random text generation using specific character sets.
|
68
74
|
|
75
|
+
[ruby]: https://www.ruby-lang.org/
|
data/Gemfile
CHANGED
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# Chars
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
* [
|
6
|
-
* [
|
3
|
+
[![CI](https://github.com/postmodern/chars.rb/actions/workflows/ruby.yml/badge.svg)](https://github.com/postmodern/chars.rb/actions/workflows/ruby.yml)
|
4
|
+
|
5
|
+
* [Source](https://github.com/postmodern/chars.rb#readme)
|
6
|
+
* [Issues](https://github.com/postmodern/chars.rb/issues)
|
7
|
+
* [Documentation](https://rubydoc.info/gems/chars)
|
7
8
|
|
8
9
|
## Description
|
9
10
|
|
@@ -13,84 +14,111 @@ recognizing text and generating random text from specific character sets.
|
|
13
14
|
## Features
|
14
15
|
|
15
16
|
* Provides character sets for:
|
16
|
-
* Numeric
|
17
|
-
* Octal
|
18
|
-
* Uppercase Hexadecimal
|
19
|
-
* Lowercase Hexadecimal
|
20
|
-
* Hexadecimal
|
21
|
-
* Uppercase Alpha
|
22
|
-
* Lowercase Alpha
|
23
|
-
* Alpha
|
24
|
-
* Alpha-numeric
|
25
|
-
* Punctuation
|
26
|
-
|
27
|
-
*
|
28
|
-
|
29
|
-
|
30
|
-
*
|
31
|
-
*
|
32
|
-
|
33
|
-
'#', '$', '%', '^', '&', '*', '_', '+', '=', '|', '\\', '<', '>', '/',)
|
34
|
-
* Printable ('0' - '9', 'a' - 'z', 'A' - 'Z', ' ', '\'', '"', '`', ',',
|
35
|
-
';', ':', '~', '-', '(', ')', '[', ']', '{', '}', '.', '?', '!', '@',
|
36
|
-
'#', '$', '%', '^', '&', '*', '_', '+', '=', '|', '\\', '<', '>', '/',
|
37
|
-
'\f', '\n', '\r', '\t', '\v')
|
38
|
-
* Control ('\x00' - '\x1f', '\x7f')
|
39
|
-
* Signed ASCII ('\x00' - '\x7f')
|
40
|
-
* ASCII ('\x00' - '\xff')
|
17
|
+
* Numeric: `0` - `9`
|
18
|
+
* Octal: `0` - `7`
|
19
|
+
* Uppercase Hexadecimal: `0` - `9`, `A` - `F`
|
20
|
+
* Lowercase Hexadecimal: `0` - `9`, `a` - `f`
|
21
|
+
* Hexadecimal: `0` - `9`, `a` - `f`, `A` - `F`
|
22
|
+
* Uppercase Alpha: `A` - `Z`
|
23
|
+
* Lowercase Alpha: `a` - `z`
|
24
|
+
* Alpha: `a` - `z`, `A` - `Z`
|
25
|
+
* Alpha-numeric: `0` - `9`, `a` - `z`, `A` - `Z`
|
26
|
+
* Punctuation: `' '`, `'`, `"`, `` ` ``, `,`, `;`, `:`, `~`, `-`, `(`, `)`, `[`, `]`, `{`, `}`, `.`, `?`, `!`
|
27
|
+
* Symbols: `' '`, `'`, `"`, `` ` ``, `,`, `;`, `:`, `~`, `-`, `(`, `)`, `[`, `]`, `{`, `}`, `.`, `?`, `!`, `@`, `#`, `$`, `%`, `^`, `&`, `*`, `_`, `+`, `=`, `|`, `\`, `<`, `>`, `/`
|
28
|
+
* Space: `' '`, `\f`, `\n`, `\r`, `\t`, `\v`
|
29
|
+
* Visible: `0` - `9`, `a` - `z`, `A` - `Z`, `'`, `"`, `` ` ``, `,`, `;`, `:`, `~`, `-`, `(`, `)`, `[`, `]`, `{`, `}`, `.`, `?`, `!`, `@`, `#`, `$`, `%`, `^`, `&`, `*`, `_`, `+`, `=`, `|`, `\`, `<`, `>`, `/`
|
30
|
+
* Printable: `0` - `9`, `a` - `z`, `A` - `Z`, `' '`, `'`, `"`, `` ` ``, `,`, `;`, `:`, `~`, `-`, `(`, `)`, `[`, `]`, `{`, `}`, `.`, `?`, `!`, `@`, `#`, `$`, `%`, `^`, `&`, <code>*</code>, <code>_</code>, `+`, `=`, `|`, `\`, `<`, `>`, `/`, `\f`, `\n`, `\r`, `\t`, `\v`
|
31
|
+
* Control: `\x00` - `\x1f`, `\x7f`
|
32
|
+
* Signed ASCII: `\x00` - `\x7f`
|
33
|
+
* ASCII: `\x00` - `\xff`
|
41
34
|
|
42
35
|
## Examples
|
43
36
|
|
44
37
|
Determine whether a byte belongs to a character set:
|
45
38
|
|
46
|
-
|
47
|
-
|
39
|
+
```ruby
|
40
|
+
0x41.alpha?
|
41
|
+
# => true
|
42
|
+
```
|
48
43
|
|
49
44
|
Determine whether a String belongs to a character set:
|
50
45
|
|
51
|
-
|
52
|
-
|
46
|
+
```ruby
|
47
|
+
"22e1c0".hex?
|
48
|
+
# => true
|
49
|
+
```
|
53
50
|
|
54
51
|
Find all sub-strings that belong to a character set within a String:
|
55
52
|
|
56
|
-
|
57
|
-
|
58
|
-
|
53
|
+
```ruby
|
54
|
+
ls = File.read('/bin/ls')
|
55
|
+
Chars.printable.strings_in(ls)
|
56
|
+
# => ["/lib64/ld-linux-x86-64.so.2", "KIq/", "5J~!", "%L~!", ...]
|
57
|
+
```
|
59
58
|
|
60
59
|
Return a random character from the set of all characters:
|
61
60
|
|
62
|
-
|
63
|
-
|
61
|
+
```ruby
|
62
|
+
Chars.all.random_char
|
63
|
+
# => "\x94"
|
64
|
+
```
|
64
65
|
|
65
66
|
Return a random Array of characters from the alpha-numeric character set:
|
66
67
|
|
67
|
-
|
68
|
-
|
68
|
+
```ruby
|
69
|
+
Chars.alpha_numeric.random_chars(10)
|
70
|
+
# => ["Q", "N", "S", "4", "x", "z", "3", "M", "F", "F"]
|
71
|
+
```
|
69
72
|
|
70
73
|
Return a random Array of a random length of unique characters from the
|
71
74
|
visible character set:
|
72
75
|
|
73
|
-
|
74
|
-
|
76
|
+
```ruby
|
77
|
+
Chars.visible.random_distinct_chars(1..10)
|
78
|
+
# => ["S", "l", "o", "8", "'", "q"]
|
79
|
+
```
|
75
80
|
|
76
81
|
Return a random String from the set of all characters:
|
77
82
|
|
78
|
-
|
79
|
-
|
83
|
+
```ruby
|
84
|
+
Chars.all.random_string(10)
|
85
|
+
# => "\xc2h\xad\xccm7\x1e6J\x13"
|
86
|
+
```
|
80
87
|
|
81
88
|
Return a random String with a random length between 5 and 10, from the
|
82
89
|
set of space characters:
|
83
90
|
|
84
|
-
|
85
|
-
|
91
|
+
```ruby
|
92
|
+
Chars.space.random_string(5..10)
|
93
|
+
# => "\r\v\n\t\n\f"
|
94
|
+
```
|
86
95
|
|
87
96
|
## Requirements
|
88
97
|
|
89
|
-
* [ruby](
|
98
|
+
* [ruby](https://www.ruby-lang.org/) >= 2.0.0
|
90
99
|
|
91
100
|
## Install
|
92
101
|
|
93
|
-
$
|
102
|
+
$ gem install chars
|
103
|
+
|
104
|
+
### gemspec
|
105
|
+
|
106
|
+
```ruby
|
107
|
+
gem.add_dependency 'chars', '~> 0.2'
|
108
|
+
```
|
109
|
+
|
110
|
+
### Gemfile
|
111
|
+
|
112
|
+
```ruby
|
113
|
+
gem 'chars', '~> 0.2'
|
114
|
+
```
|
115
|
+
|
116
|
+
## Crystal
|
117
|
+
|
118
|
+
[chars.cr] is a [Crystal] port of this library.
|
119
|
+
|
120
|
+
[chars.cr]: https://github.com/postmodern/chars.cr
|
121
|
+
[Crystal]: https://crystal-lang.org/
|
94
122
|
|
95
123
|
## License
|
96
124
|
|
data/Rakefile
CHANGED
data/chars.gemspec
CHANGED
@@ -20,6 +20,7 @@ Gem::Specification.new do |gem|
|
|
20
20
|
gem.authors = Array(gemspec['authors'])
|
21
21
|
gem.email = gemspec['email']
|
22
22
|
gem.homepage = gemspec['homepage']
|
23
|
+
gem.metadata = gemspec['metadata'] if gemspec['metadata']
|
23
24
|
|
24
25
|
glob = lambda { |patterns| gem.files & Dir[*patterns] }
|
25
26
|
|
data/gemspec.yml
CHANGED
@@ -5,12 +5,18 @@ description:
|
|
5
5
|
recognizing text and generating random text from specific character sets.
|
6
6
|
|
7
7
|
license: MIT
|
8
|
-
homepage: https://github.com/postmodern/chars#readme
|
8
|
+
homepage: https://github.com/postmodern/chars.rb#readme
|
9
9
|
authors: Postmodern
|
10
10
|
email: postmodern.mod3@gmail.com
|
11
11
|
has_yard: true
|
12
12
|
|
13
|
-
|
13
|
+
metadata:
|
14
|
+
documentation_uri: https://rubydoc.info/gems/chars
|
15
|
+
source_code_uri: https://github.com/postmodern/chars.rb
|
16
|
+
bug_tracker_uri: https://github.com/postmodern/chars.rb/issues
|
17
|
+
changelog_uri: https://github.com/postmodern/chars.rb/blob/master/ChangeLog.md
|
18
|
+
|
19
|
+
required_ruby_version: ">= 2.0.0"
|
14
20
|
|
15
21
|
development_dependencies:
|
16
22
|
bundler: ~> 2.0
|
data/lib/chars/char_set.rb
CHANGED
@@ -15,7 +15,7 @@ module Chars
|
|
15
15
|
def initialize(*arguments)
|
16
16
|
super()
|
17
17
|
|
18
|
-
@chars = Hash.new { |hash,key| hash[key] =
|
18
|
+
@chars = Hash.new { |hash,key| hash[key] = key.chr(Encoding::UTF_8) }
|
19
19
|
|
20
20
|
arguments.each do |subset|
|
21
21
|
case subset
|
@@ -28,9 +28,19 @@ module Chars
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
|
+
#
|
33
|
+
# Initializes the copy of another {CharSet} object.
|
34
|
+
#
|
35
|
+
# @param [CharSet] other
|
36
|
+
# The other {CharSet} object.
|
32
37
|
#
|
33
|
-
|
38
|
+
def initialize_copy(other)
|
39
|
+
@chars = other.instance_variable_get('@chars').dup
|
40
|
+
end
|
41
|
+
|
42
|
+
#
|
43
|
+
# Creates a new {CharSet}.
|
34
44
|
#
|
35
45
|
# @see #initialize
|
36
46
|
#
|
@@ -58,7 +68,7 @@ module Chars
|
|
58
68
|
case other
|
59
69
|
when String
|
60
70
|
other.each_char do |char|
|
61
|
-
byte =
|
71
|
+
byte = char.ord
|
62
72
|
|
63
73
|
@chars[byte] = char
|
64
74
|
super(byte)
|
@@ -79,42 +89,42 @@ module Chars
|
|
79
89
|
alias map_bytes map
|
80
90
|
|
81
91
|
#
|
82
|
-
# Determines if a character is contained within the
|
92
|
+
# Determines if a character is contained within the {CharSet}.
|
83
93
|
#
|
84
94
|
# @param [String] char
|
85
95
|
# The character to search for.
|
86
96
|
#
|
87
97
|
# @return [Boolean]
|
88
98
|
# Specifies whether the character is contained within the
|
89
|
-
#
|
99
|
+
# {CharSet}.
|
90
100
|
#
|
91
101
|
def include_char?(char)
|
92
102
|
unless char.empty?
|
93
|
-
@chars.has_value?(char) || include_byte?(
|
103
|
+
@chars.has_value?(char) || include_byte?(char.ord)
|
94
104
|
else
|
95
105
|
false
|
96
106
|
end
|
97
107
|
end
|
98
108
|
|
99
109
|
#
|
100
|
-
# The characters within the
|
110
|
+
# The characters within the {CharSet}.
|
101
111
|
#
|
102
112
|
# @return [Array<String>]
|
103
|
-
# All the characters within the
|
113
|
+
# All the characters within the {CharSet}.
|
104
114
|
#
|
105
115
|
def chars
|
106
116
|
map { |byte| @chars[byte] }
|
107
117
|
end
|
108
118
|
|
109
119
|
#
|
110
|
-
# Iterates over every character within the
|
120
|
+
# Iterates over every character within the {CharSet}.
|
111
121
|
#
|
112
122
|
# @yield [char]
|
113
123
|
# If a block is given, it will be passed each character in the
|
114
|
-
#
|
124
|
+
# {CharSet}.
|
115
125
|
#
|
116
126
|
# @yieldparam [String] char
|
117
|
-
# Each character in the
|
127
|
+
# Each character in the {CharSet}.
|
118
128
|
#
|
119
129
|
# @return [Enumerator]
|
120
130
|
# If no block is given, an enumerator object will be returned.
|
@@ -126,50 +136,54 @@ module Chars
|
|
126
136
|
end
|
127
137
|
|
128
138
|
#
|
129
|
-
# Selects characters from the
|
139
|
+
# Selects characters from the {CharSet}.
|
130
140
|
#
|
131
141
|
# @yield [char]
|
132
142
|
# If a block is given, it will be used to select the characters
|
133
|
-
# from the
|
143
|
+
# from the {CharSet}.
|
134
144
|
#
|
135
145
|
# @yieldparam [String] char
|
136
146
|
# The character to select or reject.
|
137
147
|
#
|
138
148
|
# @return [Array<String>]
|
139
|
-
# The selected characters from the
|
149
|
+
# The selected characters from the {CharSet}.
|
140
150
|
#
|
141
151
|
def select_chars(&block)
|
142
152
|
each_char.select(&block)
|
143
153
|
end
|
144
154
|
|
145
155
|
#
|
146
|
-
# Maps the characters of the
|
156
|
+
# Maps the characters of the {CharSet}.
|
147
157
|
#
|
148
158
|
# @yield [char]
|
149
159
|
# The given block will be used to transform the characters within
|
150
|
-
# the
|
160
|
+
# the {CharSet}.
|
151
161
|
#
|
152
162
|
# @yieldparam [String] char
|
153
|
-
# Each character in the
|
163
|
+
# Each character in the {CharSet}.
|
154
164
|
#
|
155
165
|
# @return [Array<String>]
|
156
|
-
# The mapped characters of the
|
166
|
+
# The mapped characters of the {CharSet}.
|
157
167
|
#
|
158
168
|
def map_chars(&block)
|
159
169
|
each_char.map(&block)
|
160
170
|
end
|
161
171
|
|
172
|
+
#
|
173
|
+
# Returns a random byte from the {CharSet}.
|
162
174
|
#
|
163
175
|
# @return [Integer]
|
164
|
-
# A random byte
|
176
|
+
# A random byte value.
|
165
177
|
#
|
166
178
|
def random_byte
|
167
179
|
self.entries[rand(self.length)]
|
168
180
|
end
|
169
181
|
|
182
|
+
#
|
183
|
+
# Returns a random character from the {CharSet}.
|
170
184
|
#
|
171
185
|
# @return [String]
|
172
|
-
# A random char
|
186
|
+
# A random char value.
|
173
187
|
#
|
174
188
|
def random_char
|
175
189
|
@chars[random_byte]
|
@@ -185,7 +199,7 @@ module Chars
|
|
185
199
|
# The block will receive the random bytes.
|
186
200
|
#
|
187
201
|
# @yieldparam [Integer] byte
|
188
|
-
# The random byte from the
|
202
|
+
# The random byte from the {CharSet}.
|
189
203
|
#
|
190
204
|
# @return [Enumerator]
|
191
205
|
# If no block is given, an enumerator object will be returned.
|
@@ -207,7 +221,7 @@ module Chars
|
|
207
221
|
# The block will receive the random characters.
|
208
222
|
#
|
209
223
|
# @yieldparam [String] char
|
210
|
-
# The random character from the
|
224
|
+
# The random character from the {CharSet}.
|
211
225
|
#
|
212
226
|
# @return [Enumerator]
|
213
227
|
# If no block is given, an enumerator object will be returned.
|
@@ -219,7 +233,7 @@ module Chars
|
|
219
233
|
end
|
220
234
|
|
221
235
|
#
|
222
|
-
# Creates an Array of random bytes from the
|
236
|
+
# Creates an Array of random bytes from the {CharSet}.
|
223
237
|
#
|
224
238
|
# @param [Integer, Array, Range] length
|
225
239
|
# The length of the Array of random bytes.
|
@@ -228,15 +242,18 @@ module Chars
|
|
228
242
|
# The randomly selected bytes.
|
229
243
|
#
|
230
244
|
def random_bytes(length)
|
231
|
-
|
232
|
-
|
245
|
+
case length
|
246
|
+
when Array
|
247
|
+
Array.new(length.sample) { random_byte }
|
248
|
+
when Range
|
249
|
+
Array.new(rand(length)) { random_byte }
|
233
250
|
else
|
234
251
|
Array.new(length) { random_byte }
|
235
252
|
end
|
236
253
|
end
|
237
254
|
|
238
255
|
#
|
239
|
-
# Creates an Array of random non-repeating bytes from the
|
256
|
+
# Creates an Array of random non-repeating bytes from the {CharSet}.
|
240
257
|
#
|
241
258
|
# @param [Integer, Array, Range] length
|
242
259
|
# The length of the Array of random non-repeating bytes.
|
@@ -245,15 +262,20 @@ module Chars
|
|
245
262
|
# The randomly selected non-repeating bytes.
|
246
263
|
#
|
247
264
|
def random_distinct_bytes(length)
|
248
|
-
|
249
|
-
|
265
|
+
shuffled_bytes = bytes.shuffle
|
266
|
+
|
267
|
+
case length
|
268
|
+
when Array
|
269
|
+
shuffled_bytes[0,length.sample]
|
270
|
+
when Range
|
271
|
+
shuffled_bytes[0,rand(length)]
|
250
272
|
else
|
251
|
-
|
273
|
+
shuffled_bytes[0,length]
|
252
274
|
end
|
253
275
|
end
|
254
276
|
|
255
277
|
#
|
256
|
-
# Creates an Array of random characters from the
|
278
|
+
# Creates an Array of random characters from the {CharSet}.
|
257
279
|
#
|
258
280
|
# @param [Integer, Array, Range] length
|
259
281
|
# The length of the Array of random characters.
|
@@ -267,7 +289,7 @@ module Chars
|
|
267
289
|
|
268
290
|
#
|
269
291
|
# Creates a String containing randomly selected characters from the
|
270
|
-
#
|
292
|
+
# {CharSet}.
|
271
293
|
#
|
272
294
|
# @param [Integer, Array, Range] length
|
273
295
|
# The length of the String of random characters.
|
@@ -283,7 +305,7 @@ module Chars
|
|
283
305
|
|
284
306
|
#
|
285
307
|
# Creates an Array of random non-repeating characters from the
|
286
|
-
#
|
308
|
+
# {CharSet}.
|
287
309
|
#
|
288
310
|
# @param [Integer, Array, Range] length
|
289
311
|
# The length of the Array of random non-repeating characters.
|
@@ -297,7 +319,7 @@ module Chars
|
|
297
319
|
|
298
320
|
#
|
299
321
|
# Creates a String containing randomly selected non-repeating
|
300
|
-
# characters from the
|
322
|
+
# characters from the {CharSet}.
|
301
323
|
#
|
302
324
|
# @param [Integer, Array, Range] length
|
303
325
|
# The length of the String of random non-repeating characters.
|
@@ -313,7 +335,7 @@ module Chars
|
|
313
335
|
|
314
336
|
#
|
315
337
|
# Finds sub-strings within given data that are made of characters within
|
316
|
-
# the
|
338
|
+
# the {CharSet}.
|
317
339
|
#
|
318
340
|
# @param [String] data
|
319
341
|
# The data to find sub-strings within.
|
@@ -334,7 +356,7 @@ module Chars
|
|
334
356
|
# optional index.
|
335
357
|
#
|
336
358
|
# @yield [String] match
|
337
|
-
# A sub-string containing the characters from the
|
359
|
+
# A sub-string containing the characters from the {CharSet}.
|
338
360
|
#
|
339
361
|
# @yield [Integer] index
|
340
362
|
# The index the sub-string was found at.
|
@@ -386,14 +408,14 @@ module Chars
|
|
386
408
|
end
|
387
409
|
|
388
410
|
#
|
389
|
-
# Creates a new CharSet object by unioning the
|
390
|
-
#
|
411
|
+
# Creates a new CharSet object by unioning the {CharSet} with another
|
412
|
+
# {CharSet}.
|
391
413
|
#
|
392
414
|
# @param [CharSet, Array, Range] set
|
393
|
-
# The other
|
415
|
+
# The other {CharSet} to union with.
|
394
416
|
#
|
395
417
|
# @return [CharSet]
|
396
|
-
# The unioned
|
418
|
+
# The unioned {ChraSet}.
|
397
419
|
#
|
398
420
|
def |(set)
|
399
421
|
set = CharSet.new(set) unless set.kind_of?(CharSet)
|
@@ -405,14 +427,14 @@ module Chars
|
|
405
427
|
|
406
428
|
#
|
407
429
|
# Compares the bytes within a given string with the bytes of the
|
408
|
-
#
|
430
|
+
# {CharSet}.
|
409
431
|
#
|
410
432
|
# @param [String, Enumerable] other
|
411
|
-
# The string to compare with the
|
433
|
+
# The string to compare with the {CharSet}.
|
412
434
|
#
|
413
435
|
# @return [Boolean]
|
414
436
|
# Specifies whether all of the bytes within the given string are
|
415
|
-
# included in the
|
437
|
+
# included in the {CharSet}.
|
416
438
|
#
|
417
439
|
# @example
|
418
440
|
# Chars.alpha === "hello"
|
@@ -439,10 +461,10 @@ module Chars
|
|
439
461
|
alias =~ ===
|
440
462
|
|
441
463
|
#
|
442
|
-
# Inspects the
|
464
|
+
# Inspects the {CharSet}.
|
443
465
|
#
|
444
466
|
# @return [String]
|
445
|
-
# The inspected
|
467
|
+
# The inspected {CharSet}.
|
446
468
|
#
|
447
469
|
def inspect
|
448
470
|
"#<#{self.class.name}: {" + map { |byte|
|
@@ -454,74 +476,10 @@ module Chars
|
|
454
476
|
# to us C programmers
|
455
477
|
'"\0"'
|
456
478
|
else
|
457
|
-
"0x%02x"
|
479
|
+
sprintf("0x%02x",byte)
|
458
480
|
end
|
459
481
|
}.join(', ') + "}>"
|
460
482
|
end
|
461
483
|
|
462
|
-
protected
|
463
|
-
|
464
|
-
if RUBY_VERSION > '1.9.'
|
465
|
-
#
|
466
|
-
# Converts a byte to a character.
|
467
|
-
#
|
468
|
-
# @param [Integer] byte
|
469
|
-
# The byte to convert.
|
470
|
-
#
|
471
|
-
# @return [String]
|
472
|
-
# The character.
|
473
|
-
#
|
474
|
-
# @since 0.2.1
|
475
|
-
#
|
476
|
-
def byte_to_char(byte)
|
477
|
-
byte.chr(Encoding::UTF_8)
|
478
|
-
end
|
479
|
-
|
480
|
-
#
|
481
|
-
# Converts a character to a byte.
|
482
|
-
#
|
483
|
-
# @param [String] char
|
484
|
-
# The character to convert.
|
485
|
-
#
|
486
|
-
# @return [Integer]
|
487
|
-
# The byte.
|
488
|
-
#
|
489
|
-
# @since 0.2.1
|
490
|
-
#
|
491
|
-
def char_to_byte(char)
|
492
|
-
char.ord
|
493
|
-
end
|
494
|
-
else
|
495
|
-
#
|
496
|
-
# Converts a byte to a character.
|
497
|
-
#
|
498
|
-
# @param [Integer] byte
|
499
|
-
# The byte to convert.
|
500
|
-
#
|
501
|
-
# @return [String]
|
502
|
-
# The character.
|
503
|
-
#
|
504
|
-
# @since 0.2.1
|
505
|
-
#
|
506
|
-
def byte_to_char(byte)
|
507
|
-
byte.chr
|
508
|
-
end
|
509
|
-
|
510
|
-
#
|
511
|
-
# Converts a character to a byte.
|
512
|
-
#
|
513
|
-
# @param [String] char
|
514
|
-
# The character to convert.
|
515
|
-
#
|
516
|
-
# @return [Integer]
|
517
|
-
# The byte.
|
518
|
-
#
|
519
|
-
# @since 0.2.1
|
520
|
-
#
|
521
|
-
def char_to_byte(char)
|
522
|
-
char[0]
|
523
|
-
end
|
524
|
-
end
|
525
|
-
|
526
484
|
end
|
527
485
|
end
|