package builtin.string; import builtin.BuiltinSub; import gui.Constants; import gui.Heap; import gui.Pointer; import gui.PointerTools; import gui.SmartList; /** * * @author Oliver Chu */ public class Split extends BuiltinSub { private String str; public Split(String str) { this.str = str; } @Override public Pointer apply(SmartList<Pointer> args) { String[] split; if (args.isEmpty() || args.get(0).type == Constants.NULL_TYPE) { split = str.split(" "); } else { String regex = PointerTools.dereferenceString(args.get(0)); split = str.split(regex); } SmartList<Pointer> list = new SmartList<Pointer>(); for (String eachString : split) { list.add(Heap.allocateString(eachString)); } return Heap.allocateList(list); } }