Text
Text prototype extensions
Import
_ <- fat.type.Text
Constructor
Name | Signature | Brief |
---|---|---|
Text | (val: Any) | Coerces value to text, same as .toText |
Prototype members
Name | Signature | Brief |
---|---|---|
isEmpty | (): Boolean | Return true if length is zero |
nonEmpty | (): Boolean | Return true if non-zero length |
size | (): Number | Return text length |
toText | (): Text | Return self value |
replace | (old: Text, new: Text): Text | Replace old with new (all) |
indexOf | (frag: Text): Number | Get fragment index, -1 if absent |
contains | (frag: Text): Boolean | Check if text contains fragment |
count | (frag: Text): Number | Get repetition count for fragment |
startsWith | (frag: Text): Boolean | Check if starts with fragment |
endsWith | (frag: Text): Boolean | Check if ends with fragment |
split | (sep: Text): List/Text | Split text by sep into list |
toLower | (): Text | Return lowercase version of text |
toUpper | (): Text | Return uppercase version of text |
trim | (): Text | Return trimmed version of text |
match | (re: Text): Boolean | Return text is match for regex |
groups | (re: Text): Scope | Return matched regex groups |
repeat | (n: Number): Text | Return text repeated n times |
overlay | (base: Text, align: Text): Text | Return text overlaid on base |
patch | (i, n, val: Text): Text | Inserts val at i, removing n chars |
toChunk | (): Chunk | Encodes to binary representation |
Example
_ <- fat.type.Text
x = 'banana'
x.size # yields 6
x.replace('nana', 'nquet'); # yields 'banquet'
regex
When defining regular expressions, prefer to use raw texts and remember to escape backslashes as needed, ensuring that the regular expressions are interpreted correctly:
alphaOnly = "^[[:alpha:]]+$"
'abc'.match(alphaOnly) == true
ipAddress = "^([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})\\.([0-9]{1,3})$"
'192.168.1.2'.groups(ipAddress) == {
_0 = '192.168.1.2'
_1 = '192'
_2 = '168'
_3 = '1'
_4 = '2'
}
the implemented dialect is POSIX regex extended
overlay
The default align value (if not provided) is 'left'. Other possible values are 'center' and 'right':
'x'.overlay('___') # 'x__'
'x'.overlay('___', 'left') # 'x__'
'x'.overlay('___', 'center') # '_x_'
'x'.overlay('___', 'right') # '__x'
the outcome is always the same size as
base
parameter, the text will be cut if it is longer