1
0
mirror of https://github.com/mitb-archive/filebot synced 2024-08-13 17:03:45 -04:00
filebot/source/net/sourceforge/filebot/format/ExpressionFormatFunctions.java

86 lines
1.5 KiB
Java
Raw Normal View History

package net.sourceforge.filebot.format;
import groovy.lang.Closure;
import java.util.ArrayList;
import java.util.List;
/**
* Global functions available in the {@link ExpressionFormat}
*/
public class ExpressionFormatFunctions {
/**
* General helpers and utilities
*/
public static Object c(Closure<?> c) {
try {
return c.call();
} catch (Exception e) {
return null;
}
}
2014-04-15 10:29:13 -04:00
public static Object any(Object a0, Object a1, Object... args) {
for (Object it : new Object[] { a0, a1 }) {
try {
2014-04-15 10:29:13 -04:00
Object result = callIfCallable(it);
if (result != null) {
return result;
}
} catch (Exception e) {
// ignore
}
}
2014-04-15 10:29:13 -04:00
for (Object it : args) {
try {
Object result = callIfCallable(it);
if (result != null) {
return result;
}
} catch (Exception e) {
// ignore
}
}
return null;
}
2014-04-15 10:29:13 -04:00
public static List<Object> allOf(Object a0, Object a1, Object... args) {
List<Object> values = new ArrayList<Object>();
2014-04-15 10:29:13 -04:00
for (Object it : new Object[] { a0, a1 }) {
try {
Object result = callIfCallable(it);
if (result != null) {
values.add(result);
}
} catch (Exception e) {
// ignore
}
}
for (Object it : args) {
try {
2014-04-15 10:29:13 -04:00
Object result = callIfCallable(it);
if (result != null) {
values.add(result);
}
} catch (Exception e) {
// ignore
}
}
return values;
}
2014-04-15 10:29:13 -04:00
private static Object callIfCallable(Object obj) throws Exception {
if (obj instanceof Closure<?>) {
return ((Closure<?>) obj).call();
}
return obj;
}
}