public CoreObject xPad(CoreCall cc) throws InterpreterException { String paddingCharacter = cc.getMemberDefaultString("with", " "); boolean padAtTheEnd = cc.getMemberDefaultString("at", "end").equals("end"); StringBuilder currentString = new StringBuilder(); currentString.append(getCurrentObject(cc).value.toString()); int padSize = cc.argPop().toDouble().intValue(); while (currentString.length() < padSize) { if (padAtTheEnd) currentString.append(paddingCharacter); else currentString.insert(0, paddingCharacter); } return new CoreString(currentString.toString()); }
public CoreObject xRxEach(CoreCall cc) throws InterpreterException { CoreObject yieldFunction = cc.argPop(); String delimiter = cc.getMemberDefaultString("sep", ""); String[] parts = getCurrentObject(cc).value.toString().split(delimiter); int partCount = parts.length; for (int i = 0; i < partCount; i++) { ClastCapsule args = new ClastCapsule(new Token(), new CoreString(parts[i])); args.next = new ClastCapsule(new Token(), new CoreNumber(i)); yieldFunction.execute(cc.flatCall(args)); } return getCurrentObject(cc); }