You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by fm...@apache.org on 2015/02/06 16:06:20 UTC
svn commit: r1657852 - in
/sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl:
html/dom/MarkupHandler.java plugin/UnwrapPlugin.java
Author: fmeschbe
Date: Fri Feb 6 15:06:19 2015
New Revision: 1657852
URL: http://svn.apache.org/r1657852
Log:
SLING-4355 Implement support for the 'sly' HTML tag
(Apply patch by Radu Cotescu, thanks a lot)
Modified:
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/MarkupHandler.java
sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/UnwrapPlugin.java
Modified: sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/MarkupHandler.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/MarkupHandler.java?rev=1657852&r1=1657851&r2=1657852&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/MarkupHandler.java (original)
+++ sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/html/dom/MarkupHandler.java Fri Feb 6 15:06:19 2015
@@ -31,6 +31,7 @@ import org.apache.sling.scripting.sightl
import org.apache.sling.scripting.sightly.impl.compiler.frontend.ExpressionWrapper;
import org.apache.sling.scripting.sightly.impl.compiler.frontend.Fragment;
import org.apache.sling.scripting.sightly.impl.compiler.frontend.Interpolation;
+import org.apache.sling.scripting.sightly.impl.compiler.ris.command.Patterns;
import org.apache.sling.scripting.sightly.impl.filter.Filter;
import org.apache.sling.scripting.sightly.impl.compiler.expression.Expression;
import org.apache.sling.scripting.sightly.impl.compiler.expression.ExpressionNode;
@@ -94,6 +95,10 @@ public class MarkupHandler {
ElementContext context = elementStack.peek();
PluginInvoke invoke = context.pluginInvoke();
invoke.beforeElement(stream, context.getTagName());
+ boolean slyTag = "sly".equalsIgnoreCase(context.getTagName());
+ if (slyTag) {
+ Patterns.beginStreamIgnore(stream);
+ }
invoke.beforeTagOpen(stream);
out(context.getOpenTagStartMarkup());
invoke.beforeAttributes(stream);
@@ -101,6 +106,9 @@ public class MarkupHandler {
invoke.afterAttributes(stream);
out(markup);
invoke.afterTagOpen(stream);
+ if (slyTag) {
+ Patterns.endStreamIgnore(stream);
+ }
invoke.beforeChildren(stream);
}
@@ -249,9 +257,16 @@ public class MarkupHandler {
PluginInvoke invoke = context.pluginInvoke();
invoke.afterChildren(stream);
boolean selfClosingTag = StringUtils.isEmpty(markup);
+ boolean slyTag = "sly".equalsIgnoreCase(context.getTagName());
+ if (slyTag) {
+ Patterns.beginStreamIgnore(stream);
+ }
invoke.beforeTagClose(stream, selfClosingTag);
out(markup);
invoke.afterTagClose(stream, selfClosingTag);
+ if (slyTag) {
+ Patterns.endStreamIgnore(stream);
+ }
invoke.afterElement(stream);
}
Modified: sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/UnwrapPlugin.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/UnwrapPlugin.java?rev=1657852&r1=1657851&r2=1657852&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/UnwrapPlugin.java (original)
+++ sling/trunk/contrib/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/plugin/UnwrapPlugin.java Fri Feb 6 15:06:19 2015
@@ -22,15 +22,16 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.scripting.sightly.impl.compiler.common.DefaultPluginInvoke;
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.BooleanConstant;
import org.apache.sling.scripting.sightly.impl.compiler.expression.node.StringConstant;
+import org.apache.sling.scripting.sightly.impl.compiler.frontend.CompilerContext;
import org.apache.sling.scripting.sightly.impl.compiler.ris.Command;
import org.apache.sling.scripting.sightly.impl.compiler.ris.command.Conditional;
+import org.apache.sling.scripting.sightly.impl.compiler.ris.command.Patterns;
import org.apache.sling.scripting.sightly.impl.compiler.ris.command.VariableBinding;
-import org.apache.sling.scripting.sightly.impl.compiler.common.DefaultPluginInvoke;
-import org.apache.sling.scripting.sightly.impl.compiler.frontend.CompilerContext;
import org.apache.sling.scripting.sightly.impl.compiler.util.stream.PushStream;
/**
@@ -50,30 +51,44 @@ public class UnwrapPlugin extends Plugin
private final String variable = compilerContext.generateVariable("unwrapCondition");
private final Command unwrapTest = new Conditional.Start(variable, false);
+ private boolean isSlyTag = false;
@Override
public void beforeElement(PushStream stream, String tagName) {
+ isSlyTag = "sly".equals(tagName.toLowerCase());
stream.emit(new VariableBinding.Start(variable, testNode()));
}
@Override
public void beforeTagOpen(PushStream stream) {
+ if (isSlyTag) {
+ Patterns.endStreamIgnore(stream);
+ }
stream.emit(unwrapTest);
}
@Override
public void afterTagOpen(PushStream stream) {
stream.emit(Conditional.END);
+ if (isSlyTag) {
+ Patterns.beginStreamIgnore(stream);
+ }
}
@Override
public void beforeTagClose(PushStream stream, boolean isSelfClosing) {
+ if (isSlyTag) {
+ Patterns.endStreamIgnore(stream);
+ }
stream.emit(unwrapTest);
}
@Override
public void afterTagClose(PushStream stream, boolean isSelfClosing) {
stream.emit(Conditional.END);
+ if (isSlyTag) {
+ Patterns.beginStreamIgnore(stream);
+ }
}
@Override