Merge pull request #506 from andrewcsmith/patch-2
[supercollider.git] / SCClassLibrary / Common / Core / Char.sc
blob6966a317bdc9bbb8e5d475006bcf669019de4a06
1 Char : Magnitude {
3         const <nl = $\n ;
4         const <ff = $\f ;
5         const <tab = $\t ;
6         const <space = $  ;
7         const <comma = $\, ;
10         *new { ^this.shouldNotImplement(thisMethod) }
11         // to create a Char use the Integer methods asAscii or asDigit
13         hash { _ObjectHash; ^this.primitiveFailed }
15         ascii {
16                 // returns the ascii value of a character as an Integer
17                 _AsciiValue
18         }
19         digit {
20                 // returns the digit value of a character as an Integer
21                 _DigitValue
22                 ^this.primitiveFailed
23         }
24         asAscii { ^this }
25         // this returns the single unicode value.
26         // ascii is a subset of unicode
27         asUnicode { ^this.ascii }
28         // case conversion
29         toUpper {
30                 _ToUpper
31         }
32         toLower {
33                 _ToLower
34         }
36         // tests return Boolean:
37         isAlpha {
38                 // is an alphabetic character
39                 _IsAlpha
40         }
41         isAlphaNum {
42                 // is an alphabetic character or decimal digit
43                 _IsAlphaNum
44         }
45         isPrint {
46                 // is printable
47                 _IsPrint
48         }
49         isPunct {
50                 // is punctuation
51                 _IsPunct
52         }
53         isControl {
54                 // is a control character
55                 _IsControl
56         }
57         isSpace {
58                 _IsSpace
59                 // is white space
60         }
61         isVowel {
62                 ^"AEIOU".includes(this.toUpper);
63         }
64         isDecDigit {
65                 // is a decimal digit 0-9
66                 _IsDecDigit
67         }
68         isUpper {
69                 // is upper case alphabetic character
70                 ^this == this.toUpper
71         }
72         isLower {
73                 // is lower case alphabetic character
74                 ^this == this.toLower
75         }
76         isFileSafe {
77                 if(this.isPrint.not,{ ^false });
78                 ^this.ascii != 47 and: {this.ascii != 58} and: {this.ascii != 34}
79         }
80         isPathSeparator {
81                 ^thisProcess.platform.isPathSeparator(this)
82         }
83         < { arg aChar;
84                 ^this.ascii < aChar.ascii
85         }
86         == { arg aChar;  ^aChar respondsTo: \ascii and: { this.ascii == aChar.ascii } }
88         ++ { |that| ^this.asString ++ that }
90         *bullet { ^if(Platform.ideName=="scapp",165.asAscii,$*) }
92         printOn { arg stream;
93                 stream.put(this);
94         }
95         storeOn { arg stream;
96                 stream.putAll(this.asCompileString);
97         }
99         archiveAsCompileString { ^true }