/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0 * * 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 groovy.text.markup; import java.util.Locale; /** * Configuration options for the {@link groovy.text.markup.MarkupTemplateEngine markup template engine}. * * @author Cedric Champeau */ public class TemplateConfiguration { private String declarationEncoding; private boolean expandEmptyElements; private boolean useDoubleQuotes; private String newLineString = System.getProperty("line.separator"); private boolean autoEscape = false; private boolean autoIndent = false; private String autoIndentString = DelegatingIndentWriter.SPACES; private boolean autoNewLine = false; private Class<? extends BaseTemplate> baseTemplateClass = BaseTemplate.class; private Locale locale = Locale.getDefault(); private boolean cacheTemplates = true; public TemplateConfiguration() { } public TemplateConfiguration(TemplateConfiguration that) { this.declarationEncoding = that.declarationEncoding; this.expandEmptyElements = that.expandEmptyElements; this.useDoubleQuotes = that.useDoubleQuotes; this.newLineString = that.newLineString; this.autoEscape = that.autoEscape; this.autoIndent = that.autoIndent; this.autoIndentString = that.autoIndentString; this.autoNewLine = that.autoNewLine; this.baseTemplateClass = that.baseTemplateClass; this.locale = that.locale; } /** * @return the encoding used in the declaration header */ public String getDeclarationEncoding() { return declarationEncoding; } /** * Set the encoding used to write the declaration header. Note that it is the responsibility of * the user to ensure that it matches the writer encoding. * @param declarationEncoding encoding to be used in the declaration string */ public void setDeclarationEncoding(final String declarationEncoding) { this.declarationEncoding = declarationEncoding; } /** * @return whether elements without body should be written in the short form (ex: <br/>) or * in an expanded form (ex: <br></br>) */ public boolean isExpandEmptyElements() { return expandEmptyElements; } public void setExpandEmptyElements(final boolean expandEmptyElements) { this.expandEmptyElements = expandEmptyElements; } /** * @return true if attributes should use double quotes instead of single quotes */ public boolean isUseDoubleQuotes() { return useDoubleQuotes; } public void setUseDoubleQuotes(final boolean useDoubleQuotes) { this.useDoubleQuotes = useDoubleQuotes; } public String getNewLineString() { return newLineString; } public void setNewLineString(final String newLineString) { this.newLineString = newLineString; } /** * @return true if variables in the model which are assignable to {@link java.lang.CharSequence} should be * automatically escaped. */ public boolean isAutoEscape() { return autoEscape; } /** * Set to true if you want variables in the model which are assignable to {@link java.lang.CharSequence} to * be escaped automatically in templates. If this flag is set to true and that you want a value not to be * automatically escaped, then you need to use <i>${unescaped.variable}</i> instead of <i>$variable</i> * @param autoEscape value if the autoEscape flag */ public void setAutoEscape(final boolean autoEscape) { this.autoEscape = autoEscape; } /** * @return true if the template engine should handle indents automatically */ public boolean isAutoIndent() { return autoIndent; } /** * Set this to true if you want the template engine to render indents automatically. In that case, * the supplied writer is wrapped into a {@link groovy.text.markup.DelegatingIndentWriter} and indents * are inserted after each call to newLine. * @param autoIndent the auto-indent flag */ public void setAutoIndent(final boolean autoIndent) { this.autoIndent = autoIndent; } public String getAutoIndentString() { return autoIndentString; } public void setAutoIndentString(final String autoIndentString) { this.autoIndentString = autoIndentString; } public boolean isAutoNewLine() { return autoNewLine; } public void setAutoNewLine(final boolean autoNewLine) { this.autoNewLine = autoNewLine; } public Class<? extends BaseTemplate> getBaseTemplateClass() { return baseTemplateClass; } /** * Set the template base class. You can use a distinct template class to provide more * statically available data to your templates. * * @param baseTemplateClass a class extending {@link groovy.text.markup.BaseTemplate} */ public void setBaseTemplateClass(final Class<? extends BaseTemplate> baseTemplateClass) { this.baseTemplateClass = baseTemplateClass; } public Locale getLocale() { return locale; } public void setLocale(final Locale locale) { this.locale = locale; } public boolean isCacheTemplates() { return cacheTemplates; } /** * If cache is enabled, then templates are compiled once for each source (URL or File). It is recommended to keep * this flag to true unless you are in development mode and want automatic reloading of templates. * @param cacheTemplates should templates be cached */ public void setCacheTemplates(final boolean cacheTemplates) { this.cacheTemplates = cacheTemplates; } }