You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2015/04/02 11:05:37 UTC
svn commit: r1670855 - in
/sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl:
engine/extension/I18nRuntimeExtension.java filter/I18nFilter.java
Author: radu
Date: Thu Apr 2 09:05:37 2015
New Revision: 1670855
URL: http://svn.apache.org/r1670855
Log:
SLING-4562 - Sightly: Allow passing of custom options to the I18n extension
* Changed the I18nFilter to pass all options to the extension call
* Changed the I18nRuntimeExtension to extract locale and hint for the options map
(applied patch from Vlad Băilescu; closes #82)
Modified:
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/I18nRuntimeExtension.java
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/filter/I18nFilter.java
Modified: sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/I18nRuntimeExtension.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/I18nRuntimeExtension.java?rev=1670855&r1=1670854&r2=1670855&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/I18nRuntimeExtension.java (original)
+++ sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/I18nRuntimeExtension.java Thu Apr 2 09:05:37 2015
@@ -20,6 +20,7 @@ package org.apache.sling.scripting.sight
import java.util.Enumeration;
import java.util.Locale;
+import java.util.Map;
import java.util.ResourceBundle;
import javax.script.Bindings;
@@ -52,10 +53,11 @@ public class I18nRuntimeExtension implem
@Override
public Object call(final RenderContext renderContext, Object... arguments) {
RenderContextImpl renderContextImpl = (RenderContextImpl) renderContext;
- ExtensionUtils.checkArgumentCount(I18nFilter.FUNCTION, arguments, 3);
+ ExtensionUtils.checkArgumentCount(I18nFilter.FUNCTION, arguments, 2);
String text = renderContextImpl.toString(arguments[0]);
- String locale = renderContextImpl.toString(arguments[1]);
- String hint = renderContextImpl.toString(arguments[2]);
+ Map<String, Object> options = (Map<String, Object>) arguments[1];
+ String locale = renderContextImpl.toString(options.get(I18nFilter.LOCALE_OPTION));
+ String hint = renderContextImpl.toString(options.get(I18nFilter.HINT_OPTION));
final Bindings bindings = renderContextImpl.getBindings();
return get(bindings, text, locale, hint);
}
Modified: sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/filter/I18nFilter.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/filter/I18nFilter.java?rev=1670855&r1=1670854&r2=1670855&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/filter/I18nFilter.java (original)
+++ sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/filter/I18nFilter.java Thu Apr 2 09:05:37 2015
@@ -24,7 +24,7 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.scripting.sightly.impl.compiler.expression.Expression;
import org.apache.sling.scripting.sightly.impl.compiler.expression.ExpressionNode;
-import org.apache.sling.scripting.sightly.impl.compiler.expression.node.NullLiteral;
+import org.apache.sling.scripting.sightly.impl.compiler.expression.node.MapLiteral;
import org.apache.sling.scripting.sightly.impl.compiler.expression.node.RuntimeCall;
/**
@@ -47,17 +47,7 @@ public class I18nFilter extends FilterCo
== ExpressionContext.PLUGIN_DATA_SLY_TEMPLATE || expressionContext == ExpressionContext.PLUGIN_DATA_SLY_CALL) {
return expression;
}
- ExpressionNode hint = option(expression, HINT_OPTION);
- ExpressionNode locale = option(expression, LOCALE_OPTION);
- ExpressionNode translation = new RuntimeCall(FUNCTION, expression.getRoot(), locale, hint);
+ ExpressionNode translation = new RuntimeCall(FUNCTION, expression.getRoot(), new MapLiteral(expression.getOptions()));
return expression.withNode(translation).withRemovedOptions(HINT_OPTION, LOCALE_OPTION);
}
-
- private ExpressionNode option(Expression expression, String optionName) {
- ExpressionNode node = expression.getOption(optionName);
- if (node == null) {
- return NullLiteral.INSTANCE;
- }
- return node;
- }
}