Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 1997-2013, www.tinygroup.org (tinygroup@126.com). Licensed under the GPL, Version 3.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.gnu.org/licenses/gpl.html Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 
 package org.tinygroup.template.impl;
 
 
 import java.io.Writer;
 import java.util.List;

抽象宏 Created by luoguo on 2014/6/6.
 
 public abstract class AbstractMacro implements Macro {
     private Macro bodyContentMacro;
     private String name;
     private List<StringparameterNames = new ArrayList<String>();
     private TemplateEngine templateEngine;
 
     public AbstractMacro(String name) {
         this. = name;
     }
 
     public AbstractMacro(String nameMacro bodyContentMacro) {
         this. = name;
         this. = bodyContentMacro;
     }
 
     protected Macro getMacro(TemplateContext $context) {
         Macro $macro;
         $macro = getBodyContentMacro();
         if ($macro == null) {
             $macro = (Macro$context.getItemMap().get("bodyContent");
         }
         if ($macro == null) {
             Context context = $context;
             while (context.getParent() != null) {
                 if (context.get("bodyContent") != null && context.getItemMap().size()>0 && !context.getItemMap().containsKey("isCalled")) {
                     $macro = (Macrocontext.getItemMap().get("bodyContent");
                     return $macro;
                 }
                 context = context.getParent();
             }
         }
         return $macro;
     }
 
     public Macro getBodyContentMacro() {
         return ;
     }
 
     public AbstractMacro(String nameList<StringparameterNamesList<EvaluateExpressionparameterDefaultValues) {
         this(name);
         this. = parameterNames;
         this. = parameterDefaultValues;
     }
 
 
     protected void addParameter(String parameterNameEvaluateExpression defaultValue) {
         .add(parameterName);
         .add(defaultValue);
     }
 
     public TemplateEngine getTemplateEngine() {
         return ;
     }
 
     public void setTemplateEngine(TemplateEngine templateEngine) {
         this. = templateEngine;
     }
 
     public void setParameterNames(List<StringparameterNames) {
         this. = parameterNames;
     }
 
         return ;
     }
 
     public void setParameterDefaultValues(List<EvaluateExpressionparameterDefaultValues) {
         this. = parameterDefaultValues;
     }
    protected void init(String name) {
        this. = name;
    }
    protected void write(Writer writerObject objectthrows IOException {
        if (object != null) {
            writer.write(object.toString());
        }
    }
    public void render(Template templateTemplateContext pageContextTemplateContext contextWriter writerthrows TemplateException {
        try {
            for (int i = 0; i < .size(); i++) {
                Object value = context.get(.get(i));
                //如果没有传值且有默认值
                if (value == null && .get(i) != null) {
                    context.put(.get(i), .get(i).evaluate(context));
                }
            }
            renderMacro(templatepageContextcontextwriter);
        } catch (IOException e) {
            throw new TemplateException(e);
        }
    }
    protected abstract void renderMacro(Template templateTemplateContext pageContextTemplateContext contextWriter writerthrows IOExceptionTemplateException;
    public String getName() {
        return ;
    }
    public List<StringgetParameterNames() {
        return ;
    }
    public String getParameterName(int index) {
        if (index < .size()) {
            return .get(index);
        }
        return null;
    }
New to GrepCode? Check out our FAQ X