001    /**
002     * Implements the Cold Fusion Function listgetat
003     */
004    package railo.runtime.functions.list;
005    
006    import railo.runtime.PageContext;
007    import railo.runtime.exp.FunctionException;
008    import railo.runtime.exp.PageException;
009    import railo.runtime.ext.function.Function;
010    import railo.runtime.type.List;
011    
012    public final class ListGetAt implements Function {
013            
014            private static final long serialVersionUID = -8227074223983816122L;
015    
016            public static String call(PageContext pc , String list, double posNumber) throws PageException {
017                    return call(pc,list,posNumber,",",false);
018            }
019    
020            public static String call(PageContext pc , String list, double posNumber, String delimeter) throws PageException {
021                    return call(pc,list,posNumber,delimeter,false);
022            }
023            
024            public static String call(PageContext pc , String list, double posNumber, String delimeter, boolean includeEmptyFields) throws PageException {
025                    int pos=(int) posNumber;
026                    String rtn = List.getAt(list,delimeter,pos-1,!includeEmptyFields);
027                    if(rtn==null) throw new FunctionException(pc,"listGetAt",2,"posNumber","invalid string list index ["+pos+"]");
028                    return rtn;
029            }
030    }