001 // Copyright (c) 2001 Hursh Jain (http://www.mollypages.org) 002 // The Molly framework is freely distributable under the terms of an 003 // MIT-style license. For details, see the molly pages web site at: 004 // http://www.mollypages.org/. Use, modify, have fun ! 005 006 package fc.util; 007 008 import java.io.*; 009 import java.util.*; 010 011 /** 012 Should be implemented for custom code functionality inside a 013 {@link fc.util.Template}. Implementing classes <b>must</b> have 014 a no-arg constructor. It is guaranteed that only one instance 015 of this class will be instantiated by the engine, although 016 multiple threads may possible use this class at the same time. 017 018 @author hursh jain 019 **/ 020 public interface CustomCode 021 { 022 /** 023 Called back from the template engine while substiting data inside 024 a template. 025 @param writer can be used to write data at the point in the merged 026 file where the custom code was called. This writer 027 should <b>not</b> be closed, otherwise the template engine 028 will not be able to proceed after this method is invoked (since 029 the template engine also uses the same writer. 030 @param env a reference to the template engine, can be used to 031 invoke methods in the engine. 032 **/ 033 public void code(Writer writer, Template env) throws IOException; 034 } //~interface CustomCode