1 /*
2 * This file is part of Pease Plate Template Engine.
3 *
4 * Pease Plate Template Engine is free software: you can redistribute
5 * it and/or modify it under the terms of the GNU Lesser General
6 * Public License as published by the Free Software Foundation,
7 * either version 3 of the License, or any later version.
8 *
9 * Pease Plate Template Engine is distributed in the hope that it
10 * will be useful, but WITHOUT ANY WARRANTY; without even the implied
11 * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 * See the GNU Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with Pease Plate Template Engine. If not, see
16 * <http://www.gnu.org/licenses/>.
17 *
18 * Copyright (c) 2008 Manfred HANTSCHEL
19 */
20 package org.peaseplate.chunk;
21
22 import java.io.IOException;
23 import java.io.Writer;
24
25 import org.peaseplate.TemplateException;
26 import org.peaseplate.internal.BuildContext;
27 import org.peaseplate.locator.TemplateLocator;
28
29
30 /**
31 * A chunk is a piece of a compiled template.
32 *
33 * @author Manfred HANTSCHEL
34 */
35 public interface Chunk {
36
37 /**
38 * Returns the template locator of the template this chunk belongs to
39 * @return the template locator
40 */
41 public TemplateLocator getLocator();
42
43 /**
44 * Returns the line where this chunk is located in the source of the template.
45 * @return the line
46 */
47 public int getLine();
48
49 /**
50 * Returns the column where this chunk is located in the source of the template.
51 * @return the column
52 */
53 public int getColumn();
54
55 /**
56 * Returns true if the chunk is visible, false otherwise.
57 * A content chunk with only white spaces in it, is by definition
58 * not visible and not essential. It only gets essential
59 * if it's the only thing in the line.
60 *
61 * @return true if visible, false otherwise
62 */
63 public boolean isVisible();
64
65 /**
66 * Returns true if the chunk is essential, false otherwise.
67 * A code chunk is by default essential, a content chunk not
68 * if it contains just spaces.
69 *
70 * @return true if essential, false otherwise
71 */
72 public boolean isEssential();
73
74 /**
75 * Renders the chunk to the specified writer using the specified template context.
76 * @param context the context
77 * @param writer the writer
78 * @throws TemplateException on occasion
79 * @throws IOException on occasion
80 */
81 public void render(BuildContext context, Writer writer) throws TemplateException, IOException;
82
83 /**
84 * Returns a meaningful representation of this chunk
85 * @return a meaningful representation of this chunk
86 */
87 public String toString();
88
89 }