1 /// Partial alternative to std.uni
2 module sily.uni;
3 
4 import std.traits: isSomeChar;
5 
6 /** 
7 Checks if `c` is letter or `_`
8 Params:
9   c = char
10 Returns: isAlpha
11 */
12 bool isAlpha(T)(T c) if (isSomeChar!T) {
13     return  (c >= 'a' && c <= 'z') ||
14             (c >= 'A' && c <= 'Z') ||
15             (c == '_');
16 }
17 
18 /** 
19 Checks if `c` is letter, `_` or digit
20 Params:
21   c = char
22 Returns: isAlphaNumeric
23  */
24 bool isAlphaNumeric(T)(T c) if (isSomeChar!T) {
25     return isAlpha(c) || isDigit(c);
26 }
27 
28 /** 
29 Checks if `c` is digit
30 Params:
31   c = char
32 Returns: isDigit
33  */
34 bool isDigit(T)(T c) if (isSomeChar!T) {
35     return c >= '0' && c <= '9';
36 }
37 
38 /** 
39 Checks if `c` is hexadecimal (all digits & letters from A to F)
40 Params:
41   c = char
42 Returns: isHex
43  */
44 bool isHex(T)(T c) if (isSomeChar!T) {
45     return (c >= '0' && c <= '9') || 
46            (c >= 'a' && c <= 'f') || 
47            (c >= 'A' && c <= 'F');
48 }
49 
50 /** 
51 Checks if `c` is octal number (0 <= c <= 7)
52 Params:
53   c = char
54 Returns: isOct
55  */
56 bool isOct(T)(T c) if (isSomeChar!T) {
57     return (c >= '0' && c <= '7');
58 }
59