package water.rapids.ast.prims.mungers;
import water.fvec.*;
import water.rapids.Env;
import water.rapids.Merge;
import water.rapids.Val;
import water.rapids.ast.AstParameter;
import water.rapids.ast.AstPrimitive;
import water.rapids.ast.AstRoot;
import water.rapids.vals.ValFrame;
/** Sort the whole frame by the given columns
*/
public class AstSort extends AstPrimitive {
@Override public String[] args() { return new String[]{"ary","cols"}; }
@Override public String str(){ return "sort";}
@Override public int nargs() { return 1+2; } // (sort ary [cols])
@Override public ValFrame apply(Env env, Env.StackHelp stk, AstRoot asts[]) {
Frame fr = stk.track(asts[1].exec(env)).getFrame();
int[] cols = ((AstParameter)asts[2]).columns(fr.names());
return new ValFrame(Merge.sort(fr,cols));
}
}