156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson/* 256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * Copyright (C) 2010 Google Inc. 356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * 456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * Licensed under the Apache License, Version 2.0 (the "License"); 556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * you may not use this file except in compliance with the License. 656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * You may obtain a copy of the License at 756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * 856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * http://www.apache.org/licenses/LICENSE-2.0 956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * 1056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * Unless required by applicable law or agreed to in writing, software 1156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * distributed under the License is distributed on an "AS IS" BASIS, 1256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * See the License for the specific language governing permissions and 1456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * limitations under the License. 1556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson */ 1656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 1756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonpackage com.google.clearsilver.jsilver; 1856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 1956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonimport com.google.clearsilver.jsilver.data.Data; 2056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonimport com.google.clearsilver.jsilver.exceptions.JSilverException; 2156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonimport com.google.clearsilver.jsilver.resourceloader.ResourceLoader; 2256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonimport com.google.clearsilver.jsilver.template.Template; 2356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 2456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonimport java.io.IOException; 2556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 2656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson/** 2756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * Renders a template. 2856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson */ 2956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodsonpublic interface TemplateRenderer { 3056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 3156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson /** 3256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * Renders a given template and provided data, writing to an arbitrary output. 3356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * 3456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * @param templateName Name of template to load (e.g. "things/blah.cs"). 3556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * @param data Data to be used in template. 3656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * @param output Where template should be rendered to. This can be a Writer, PrintStream, 3756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * System.out/err), StringBuffer/StringBuilder or anything that implements 3856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * java.io.Appendable 3956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * @param resourceLoader ResourceLoader to use when reading in included files. 4056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson */ 4156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson void render(String templateName, Data data, Appendable output, ResourceLoader resourceLoader) 4256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson throws IOException, JSilverException; 4356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 4456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson /** 4556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * Same as {@link #render(String, Data, Appendable, ResourceLoader)}, except it uses the default 4656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * ResourceLoader passed in to the JSilver constructor. 4756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson */ 4856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson void render(String templateName, Data data, Appendable output) throws IOException, 4956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson JSilverException; 5056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 5156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson /** 5256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * Same as {@link #render(String, Data, Appendable)}, except returns rendered template as a 5356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * String. 5456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson */ 5556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson String render(String templateName, Data data) throws IOException, JSilverException; 5656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 5756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson /** 5856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * Renders a given template and provided data, writing to an arbitrary output. 5956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * 6056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * @param template Template to render. 6156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * @param data Data to be used in template. 6256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * @param output Where template should be rendered to. This can be a Writer, PrintStream, 6356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * System.out/err), StringBuffer/StringBuilder or anything that implements 6456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * java.io.Appendable. 6556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * @param resourceLoader ResourceLoader to use when reading in included files. 6656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * 6756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson */ 6856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson void render(Template template, Data data, Appendable output, ResourceLoader resourceLoader) 6956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson throws IOException, JSilverException; 7056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 7156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson /** 7256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * Same as {@link #render(Template,Data,Appendable,ResourceLoader)}, except it uses the 7356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * ResourceLoader passed into the JSilver constructor. 7456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson */ 7556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson void render(Template template, Data data, Appendable output) throws IOException, JSilverException; 7656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 7756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson /** 7856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * Same as {@link #render(Template,Data,Appendable)}, except returns rendered template as a 7956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * String. 8056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson */ 8156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson String render(Template template, Data data) throws IOException, JSilverException; 8256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 8356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson /** 8456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * Renders a given template from the content passed in. That is, the first parameter is the actual 8556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * template content rather than the filename to load. 8656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * 8756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * @param content Content of template (e.g. "Hello <cs var:name ?>"). 8856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * @param data Data to be used in template. 8956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * @param output Where template should be rendered to. This can be a Writer, PrintStream, 9056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * System.out/err), StringBuffer/StringBuilder or anything that implements 9156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * java.io.Appendable 9256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson */ 9356ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson void renderFromContent(String content, Data data, Appendable output) throws IOException, 9456ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson JSilverException; 9556ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 9656ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson /** 9756ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * Same as {@link #renderFromContent(String, Data, Appendable)}, except returns rendered template 9856ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson * as a String. 9956ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson */ 10056ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson String renderFromContent(String content, Data data) throws IOException, JSilverException; 10156ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson 10256ed4167b942ec265f9cee70ac4d71d10b3835ceBen Dodson} 103