Exemplo n.º 1
0
 public void print(SyntaxPrinter printer) {
   printer.printWithTabs("#set (");
   target.print(printer);
   printer.print(" = ");
   data.print(printer);
   printer.println(")");
 }
Exemplo n.º 2
0
  public Object generate() {
    if (target.isNamespaceRef()) {
      // e.g: #set ($x = $y)
      throw new InterpretationException(
          source,
          indexInSource,
          "Not possible to set namespace variable $" + target.getNamespaceName());
    }
    if (target.isMethodRef()) {
      // e.g: #set (a() = 123)
      throw new InterpretationException(
          source, indexInSource, "Not possible to set a method, function or macro");
    }
    if (!target.hasAttributes()) {
      // e.g: #set (x = "1") or #set ($n.x = "1")
      data.setAttribute(target.getVariableName(), target.getSpecifiedContext(context));
    } else {
      // e.g: #set (x.a = "1") or #set ($n.x.a = "1") or #set (a.b.c.d = 1)
      AttributeRefs targetAttributeRefs = target.getAttributesRefs();

      AttributeRef targetAttributeRef = targetAttributeRefs.getLastAttribute();
      String targetAttributeName = targetAttributeRef.getName();

      Object targetObject = target.getContext().evaluate(target.getAttributeRef());

      if (targetObject == null) {
        throw new InterpretationException(
            source,
            indexInSource,
            "Can not set value, the target was null '" + target.getAttributeRef().getName() + "'");
      }

      targetAttributeRefs = targetAttributeRefs.createAttributesSkipLast();

      if (targetAttributeRefs.hasAttributes()) {
        targetObject =
            targetAttributeRefs.evaluateNextAttributes(target.getContext(), targetObject);
      }

      Context targetContext = contextFactory.createContext(targetObject, targetAttributeRef);
      data.setAttribute(targetAttributeName, targetContext);
    }
    return null;
  }
Exemplo n.º 3
0
 public void setComparition(IComparition icomparition) {
   data = new Data();
   data.setComparision((Comparition) icomparition);
 }