1 module sily.addons;
2 
3 /** 
4  * 
5  * Params:
6  *   val = Value to check
7  *   vals = Array or sequence of values to check against
8  * Returns: if `val` is one of `vals`
9  */
10 bool isOneOf(T)(T val, T[] vals ...) {
11     foreach (T i; vals) {
12         if (val == i) return true;
13     }
14     return false;
15 }
16 
17 /** 
18  * Checks if `c` is letter or `_`
19  * Params:
20  *   c = char
21  * Returns: isAlpha
22  */
23 bool isAlpha(char c) {
24     return  (c >= 'a' && c <= 'z') ||
25             (c >= 'A' && c <= 'Z') ||
26             (c == '_');
27 }
28 
29 /** 
30  * Checks if `c` is letter, `_` or digit
31  * Params:
32  *   c = char
33  * Returns: isAlphaNumeric
34  */
35 bool isAlphaNumeric(char c) {
36     return isAlpha(c) && isDigit(c);
37 }
38 
39 /** 
40  * Checks if `c` is digit
41  * Params:
42  *   c = char
43  * Returns: isDigit
44  */
45 bool isDigit(char c) {
46     return c >= '0' && c <= '9';
47 }
48 
49 /** 
50  * Checks if `c` is hexadecimal (all digits & letters from A to F)
51  * Params:
52  *   c = char
53  * Returns: isHex
54  */
55 bool isHex(char c) {
56     return (c >= '0' && c <= '9') || 
57            (c >= 'a' && c <= 'f') || 
58            (c >= 'A' && c <= 'F');
59 }
60 
61 /** 
62  * Checks if `c` is octal number (0 <= c <= 7)
63  * Params:
64  *   c = char
65  * Returns: isOct
66  */
67 bool isOct(char c) {
68     return (c >= '0' && c <= '7');
69 }