@@ -35,10 +35,12 @@ 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 ( &:chr ) } . flatten
38
+ # Chars in ranges: [33..47, 58..64, 91..96, 123..126]
39
+ Punct = %w( ] [ ! " # $ % & ' ( ) * + , . / : ; < = > ? @ \\ ^ _ ` { | } ~ - )
39
40
Hex = Array ( 'a' ..'f' ) | Array ( 'A' ..'F' ) | Digit
40
41
Word = Lower | Upper | Digit | [ '_' ]
41
42
Whitespace = [ ' ' , "\t " , "\n " , "\r " , "\v " , "\f " ]
43
+ Control = ( 0 ..31 ) . map ( &:chr ) | [ "\x7f " ]
42
44
# Ensure that the "common" characters appear first in the array. Do not include "\n"!
43
45
Any = Lower | Upper | Digit | Punct | ( 0 ..255 ) . map ( &:chr ) - [ "\n " ]
44
46
end . freeze
@@ -62,5 +64,22 @@ module CharSets
62
64
'v' => [ "\v " ] , # vertical tab
63
65
'e' => [ "\e " ] , # escape
64
66
} . freeze
67
+
68
+ POSIXCharMap = {
69
+ 'alnum' => CharSets ::Upper | CharSets ::Lower | CharSets ::Digit ,
70
+ 'alpha' => CharSets ::Upper | CharSets ::Lower ,
71
+ 'blank' => [ " " , "\t " ] ,
72
+ 'cntrl' => CharSets ::Control ,
73
+ 'digit' => CharSets ::Digit ,
74
+ 'graph' => ( CharSets ::Any - CharSets ::Control ) - [ " " ] , # Visible chars
75
+ 'lower' => CharSets ::Lower ,
76
+ 'print' => CharSets ::Any - CharSets ::Control ,
77
+ 'punct' => CharSets ::Punct ,
78
+ 'space' => CharSets ::Whitespace ,
79
+ 'upper' => CharSets ::Upper ,
80
+ 'xdigit' => CharSets ::Hex ,
81
+ 'word' => CharSets ::Word ,
82
+ 'ascii' => CharSets ::Any | [ "\n " ] ,
83
+ } . freeze
65
84
end
66
85
0 commit comments