104 lines
2.3 KiB
Plaintext
104 lines
2.3 KiB
Plaintext
#!/usr/local/bin/jsish -u %s
|
|
|
|
var str = "abcdefgh";
|
|
|
|
var n = 2;
|
|
var m = 3;
|
|
|
|
// In jsish, semi-colon first character lines are echoed with result
|
|
;str;
|
|
;n;
|
|
;m;
|
|
|
|
// * starting from n characters in and of m length;
|
|
;str.substr(n, m);
|
|
|
|
// * starting from n characters in, up to the end of the string;
|
|
;str.substr(n);
|
|
;str.substring(n);
|
|
|
|
// * whole string minus last character;
|
|
;str.substring(0, str.length - 1);
|
|
|
|
// * starting from a known character within the string and of m length;
|
|
;str.substr(str.indexOf('b'), m);
|
|
|
|
// * starting from a known substring within the string and of m length.
|
|
;str.substr(str.indexOf('bc'), m);
|
|
|
|
|
|
/* Functional */
|
|
var res = (function () {
|
|
'use strict';
|
|
|
|
// take :: Int -> Text -> Text
|
|
function take(n, s) {
|
|
return s.substr(0, n);
|
|
}
|
|
|
|
// drop :: Int -> Text -> Text
|
|
function drop(n, s) {
|
|
return s.substr(n);
|
|
}
|
|
|
|
|
|
// init :: Text -> Text
|
|
function init(s) {
|
|
var n = s.length;
|
|
return (n > 0 ? s.substr(0, n - 1) : undefined);
|
|
}
|
|
|
|
// breakOn :: Text -> Text -> (Text, Text)
|
|
function breakOn(strPattern, s) {
|
|
var i = s.indexOf(strPattern);
|
|
return i === -1 ? [strPattern, ''] : [s.substr(0, i), s.substr(i)];
|
|
}
|
|
|
|
|
|
var str = 'abcdefgh';
|
|
|
|
|
|
return JSON.stringify({
|
|
|
|
'from 4 in, of length 3': (function (n, m) {
|
|
return take(m, drop(n, str));
|
|
})(4, 3),
|
|
|
|
|
|
'from 3 in, up to end' : (function (n) {
|
|
return drop(n, str);
|
|
})(3),
|
|
|
|
|
|
'all but last' : init(str),
|
|
|
|
|
|
'from matching b, of length 3' : (function (pattern, s, n) {
|
|
return take(n, breakOn(pattern, s)[1]);
|
|
})('b', str, 3),
|
|
|
|
|
|
'from matching bc, of length 4':(function (pattern, s, n) {
|
|
return take(n, breakOn(pattern, s)[1]);
|
|
})('bc', str, 4)
|
|
|
|
}, true);
|
|
|
|
})();
|
|
;res;
|
|
|
|
/*
|
|
=!EXPECTSTART!=
|
|
str ==> abcdefgh
|
|
n ==> 2
|
|
m ==> 3
|
|
str.substr(n, m) ==> cde
|
|
str.substr(n) ==> cdefgh
|
|
str.substring(n) ==> cdefgh
|
|
str.substring(0, str.length - 1) ==> abcdefgh
|
|
str.substr(str.indexOf('b'), m) ==> bcd
|
|
str.substr(str.indexOf('bc'), m) ==> bcd
|
|
res ==> { "all but last":"abcdefg", "from 3 in, up to end":"defgh", "from 4 in, of length 3":"efg", "from matching b, of length 3":"bcd", "from matching bc, of length 4":"bcde" }
|
|
=!EXPECTEND!=
|
|
*/
|