@@ -35,18 +35,20 @@ module CharSets
35
35
Lower = Array ( 'a' ..'z' )
36
36
Upper = Array ( 'A' ..'Z' )
37
37
Digit = Array ( '0' ..'9' )
38
- Punct = [ 33 ..47 , 58 ..64 , 91 ..96 , 123 ..126 ] . map { |r | r . map { | val | val . chr } } . flatten
38
+ Punct = [ 33 ..47 , 58 ..64 , 91 ..96 , 123 ..126 ] . map { |r | r . map ( & : chr) } . flatten
39
39
Hex = Array ( 'a' ..'f' ) | Array ( 'A' ..'F' ) | Digit
40
+ Word = Lower | Upper | Digit | [ '_' ]
40
41
Whitespace = [ ' ' , "\t " , "\n " , "\r " , "\v " , "\f " ]
41
- Any = Lower | Upper | Digit | Punct
42
- end
42
+ # Ensure that the "common" characters appear first in the array. Do not include "\n"!
43
+ Any = Lower | Upper | Digit | Punct | ( 0 ..255 ) . map ( &:chr ) - [ "\n " ]
44
+ end . freeze
43
45
44
46
# Map of special regex characters, to their associated character sets
45
47
BackslashCharMap = {
46
48
'd' => CharSets ::Digit ,
47
- 'D' => CharSets ::Lower | CharSets ::Upper | CharSets :: Punct ,
48
- 'w' => CharSets ::Lower | CharSets :: Upper | CharSets :: Digit | [ '_' ] ,
49
- 'W' => CharSets ::Punct . reject { | val | val == '_' } ,
49
+ 'D' => CharSets ::Any - CharSets ::Digit ,
50
+ 'w' => CharSets ::Word ,
51
+ 'W' => CharSets ::Any - CharSets :: Word ,
50
52
's' => CharSets ::Whitespace ,
51
53
'S' => CharSets ::Any - CharSets ::Whitespace ,
52
54
'h' => CharSets ::Hex ,
@@ -59,6 +61,6 @@ module CharSets
59
61
'a' => [ "\a " ] , # alarm
60
62
'v' => [ "\v " ] , # vertical tab
61
63
'e' => [ "\e " ] , # escape
62
- }
64
+ } . freeze
63
65
end
64
66
0 commit comments