14 lines
555 B
Text
14 lines
555 B
Text
var SPE = "\ufffe" // unused unicode character in Specials block
|
|
var SPF = "\uffff" // ditto
|
|
|
|
var tokenize = Fn.new { |str, sep, esc|
|
|
str = str.replace(esc + esc, SPE).replace(esc + sep, SPF)
|
|
str = (str[-1] == esc) ? str[0...-1].replace(esc, "") + esc : str.replace(esc, "")
|
|
return str.split(sep).map { |s| s.replace(SPE, esc).replace(SPF, sep) }.toList
|
|
}
|
|
|
|
var str = "one^|uno||three^^^^|four^^^|^cuatro|"
|
|
var sep = "|"
|
|
var esc = "^"
|
|
var items = tokenize.call(str, sep, esc)
|
|
for (item in items) System.print((item == "") ? "(empty)" : item)
|