package org.nutz.el.opt.custom;
import java.util.List;
import org.nutz.el.opt.RunMethod;
import org.nutz.plugin.Plugin;
/**
* 取小
* @author juqkai(juqkai@gmail.com)
*
*/
public class Min implements RunMethod, Plugin{
public Object run(List<Object> param) {
if(param.size() <= 0){
return null;
}
Number n1 = (Number) param.get(0);
for(int i = 1; i < param.size(); i ++){
Number n2 = (Number) param.get(i);
n1 = (Number) min(n1, n2);
}
return n1;
}
private Object min(Number n1, Number n2){
if(n1 == null){
return n2;
}
if(n2 == null){
return n1;
}
if(n1 instanceof Double || n2 instanceof Double){
return Math.min(n1.doubleValue(), n2.doubleValue());
}
if(n1 instanceof Float || n2 instanceof Float){
return Math.min(n1.floatValue(), n2.floatValue());
}
if(n1 instanceof Long || n2 instanceof Long){
return Math.min(n1.longValue(), n2.longValue());
}
return Math.min(n1.intValue(), n2.intValue());
}
public boolean canWork() {
return true;
}
public String fetchSelf() {
return "min";
}
}