@abaplint/runtime
Version:
Transpiler - Runtime
33 lines • 1.2 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.shift_left = shift_left;
const string_1 = require("../types/string");
const throw_error_1 = require("../throw_error");
function shift_left(input) {
let val = typeof input.val === "string" ? input.val : input.val.get();
if (input.sub) {
const sub = typeof input.sub === "string" ? input.sub : input.sub.get();
while (val.startsWith(sub)) {
val = val.substr(sub.length);
}
}
else if (input.places) {
let places = typeof input.places === "string" ? input.places : input.places.get();
if (typeof places === "string") {
places = parseInt(places, 10);
}
if (places > val.length) {
(0, throw_error_1.throwError)("CX_SY_RANGE_OUT_OF_BOUNDS");
}
val = val.substring(places);
}
else if (input.circular) {
const leftShifts = input.circular.get() % val.length;
val = val.slice(leftShifts) + val.slice(0, leftShifts);
}
else {
return shift_left({ val: input.val, sub: " " });
}
return new string_1.String().set(val);
}
//# sourceMappingURL=shift_left.js.map