* make binding value cleanup (path separators / trim) also work in CLI
This commit is contained in:
parent
1039701549
commit
0de615cd00
|
@ -3,6 +3,7 @@ package net.sourceforge.filebot.format;
|
|||
|
||||
|
||||
import static net.sourceforge.tuned.ExceptionUtilities.*;
|
||||
import static net.sourceforge.tuned.FileUtilities.*;
|
||||
import groovy.lang.GroovyRuntimeException;
|
||||
import groovy.lang.MissingPropertyException;
|
||||
|
||||
|
@ -141,7 +142,13 @@ public class ExpressionFormat extends Format {
|
|||
|
||||
|
||||
public Bindings getBindings(Object value) {
|
||||
return new ExpressionBindings(value);
|
||||
return new ExpressionBindings(value) {
|
||||
|
||||
@Override
|
||||
public Object get(Object key) {
|
||||
return normalizeBindingValue(super.get(key));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
@ -165,7 +172,7 @@ public class ExpressionFormat extends Format {
|
|||
for (Object snipped : compilation) {
|
||||
if (snipped instanceof CompiledScript) {
|
||||
try {
|
||||
Object value = ((CompiledScript) snipped).eval(context);
|
||||
Object value = normalizeExpressionValue(((CompiledScript) snipped).eval(context));
|
||||
|
||||
if (value != null) {
|
||||
sb.append(value);
|
||||
|
@ -182,6 +189,22 @@ public class ExpressionFormat extends Format {
|
|||
}
|
||||
|
||||
|
||||
protected Object normalizeBindingValue(Object value) {
|
||||
// if the binding value is a String, remove illegal characters
|
||||
if (value instanceof CharSequence) {
|
||||
return replacePathSeparators(value.toString()).trim();
|
||||
}
|
||||
|
||||
// if the binding value is an Object, just leave it
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
protected Object normalizeExpressionValue(Object value) {
|
||||
return value;
|
||||
}
|
||||
|
||||
|
||||
protected void handleException(ScriptException exception) {
|
||||
if (findCause(exception, MissingPropertyException.class) != null) {
|
||||
lastException = new ExpressionException(new BindingException(findCause(exception, MissingPropertyException.class).getProperty(), "undefined", exception));
|
||||
|
|
|
@ -2,15 +2,11 @@
|
|||
package net.sourceforge.filebot.ui.rename;
|
||||
|
||||
|
||||
import static net.sourceforge.tuned.FileUtilities.*;
|
||||
|
||||
import java.io.File;
|
||||
import java.text.Format;
|
||||
|
||||
import javax.script.Bindings;
|
||||
import javax.script.ScriptException;
|
||||
|
||||
import net.sourceforge.filebot.format.ExpressionBindings;
|
||||
import net.sourceforge.filebot.format.ExpressionFormat;
|
||||
import net.sourceforge.filebot.format.MediaBindingBean;
|
||||
import net.sourceforge.filebot.similarity.Match;
|
||||
|
@ -53,27 +49,7 @@ class ExpressionFormatter implements MatchFormatter {
|
|||
public synchronized String format(Match<?, ?> match) throws ScriptException {
|
||||
// lazy initialize script engine
|
||||
if (format == null) {
|
||||
format = new ExpressionFormat(expression) {
|
||||
|
||||
@Override
|
||||
public Bindings getBindings(Object value) {
|
||||
return new ExpressionBindings(value) {
|
||||
|
||||
@Override
|
||||
public Object get(Object key) {
|
||||
Object value = super.get(key);
|
||||
|
||||
// if the binding value is a String, remove illegal characters
|
||||
if (value instanceof CharSequence) {
|
||||
return replacePathSeparators(value.toString()).trim();
|
||||
}
|
||||
|
||||
// if the binding value is an Object, just leave it
|
||||
return value;
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
format = new ExpressionFormat(expression);
|
||||
}
|
||||
|
||||
// evaluate the expression using the given bindings
|
||||
|
|
Loading…
Reference in New Issue