Package net.asfun.jangod.lib.macro

Source Code of net.asfun.jangod.lib.macro.CallMacro

package net.asfun.jangod.lib.macro;

import net.asfun.jangod.lib.Macro;
import net.asfun.jangod.parse.ParseException;
import net.asfun.jangod.parse.TagToken;
import net.asfun.jangod.tree.Node;
import net.asfun.jangod.tree.TagNode;
import net.asfun.jangod.tree.TreeRebuilder;

public class CallMacro implements Macro{

  final String MACRONAME = "call";
 
  @Override
  public String getEndMacroName() {
    return null;
  }

  @Override
  public void refactor(Node current, String helpers, TreeRebuilder rebuilder)
      throws ParseException {
    //helpers like  name  arg2=val2,arg3=var3
    String name = "";// TODO get from helpers;
    Node defineNode = rebuilder.fetchNode(MacroMacro.MACRO_NAME_PREFIX + name);
    if ( defineNode == null ) {
      throw new ParseException("Call a macro didn't define yet >>> " + name);
    }
    String[] args = new String[]{};// TODO resolve from macro's helpers
    String[] vals = new String[]{};// TODO resolve from helpers and macro's helpers
    for (int i=0; i<args.length; i++ ) {
      TagNode tn = new TagNode(new TagToken("{%set "+args[i] + " " + vals[i] + " just %}"));
      rebuilder.nodeInsertBefore(current, tn);
    }
    rebuilder.nodeReplace(current, defineNode.clone().children());
  }

  @Override
  public String getName() {
    return MACRONAME;
  }

}
TOP

Related Classes of net.asfun.jangod.lib.macro.CallMacro

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.