Package net.asfun.jangod.lib.macro

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

package net.asfun.jangod.lib.macro;

import java.io.IOException;

import net.asfun.jangod.base.ResourceManager;
import net.asfun.jangod.lib.Macro;
import net.asfun.jangod.parse.ParseException;
import net.asfun.jangod.parse.TokenParser;
import net.asfun.jangod.tree.Node;
import net.asfun.jangod.tree.TreeParser;
import net.asfun.jangod.tree.TreeRebuilder;
import net.asfun.jangod.util.HelperStringTokenizer;

public class ExtendsMacro implements Macro{

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

  @Override
  public void refactor(Node current, String helpers, TreeRebuilder rebuilder)
      throws ParseException {
    String[] helper = new HelperStringTokenizer(helpers).allTokens();
    if( helper.length != 1) {
      throw new ParseException("Macro 'extends' expects 1 helper >>> " + helper.length);
    }
    String templateFile = rebuilder.resolveString(helper[0]);
    try {
      String fullName = ResourceManager.getFullName(templateFile,
          rebuilder.getWorkspace(), rebuilder.getConfiguration().getWorkspace());
      //TODO STOP LOOP EXTENDS
      Node extendsRoot = TreeParser.parser( new TokenParser( ResourceManager.getResource(
          fullName, rebuilder.getConfiguration().getEncoding())));
      extendsRoot = rebuilder.derive().refactor(extendsRoot);
     
      rebuilder.parent = extendsRoot;
      rebuilder.nodeRemove(current);
    } catch (IOException e) {
      throw new ParseException(e.getMessage());
    }
  }

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

}
TOP

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

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.