package org.stringtemplate.v4;

import org.antlr.runtime.CharStream;
import org.antlr.runtime.CommonToken;
import org.stringtemplate.v4.compiler.*;
import org.stringtemplate.v4.compiler.Compiler;
import org.stringtemplate.v4.misc.Misc;

import java.net.URL;

A directory of templates without headers like ST v3 had. Still allows group files in directory though like STGroupDir parent.
/** A directory of templates without headers like ST v3 had. Still allows group * files in directory though like {@link STGroupDir} parent. */
public class STRawGroupDir extends STGroupDir { public STRawGroupDir(String dirName) { super(dirName); } public STRawGroupDir(String dirName, char delimiterStartChar, char delimiterStopChar) { super(dirName, delimiterStartChar, delimiterStopChar); } public STRawGroupDir(String dirName, String encoding) { super(dirName, encoding); } public STRawGroupDir(String dirName, String encoding, char delimiterStartChar, char delimiterStopChar) { super(dirName, encoding, delimiterStartChar, delimiterStopChar); } public STRawGroupDir(URL root, String encoding, char delimiterStartChar, char delimiterStopChar) { super(root, encoding, delimiterStartChar, delimiterStopChar); } @Override public CompiledST loadTemplateFile(String prefix, String unqualifiedFileName, CharStream templateStream) { String template = templateStream.substring(0, templateStream.size() - 1); String templateName = Misc.getFileNameNoSuffix(unqualifiedFileName); String fullyQualifiedTemplateName = prefix + templateName; CompiledST impl = new Compiler(this).compile(fullyQualifiedTemplateName, template); CommonToken nameT = new CommonToken(STLexer.SEMI); // Seems like a hack, best I could come up with. nameT.setInputStream(templateStream); rawDefineTemplate(fullyQualifiedTemplateName, impl, nameT); impl.defineImplicitlyDefinedTemplates(this); return impl; } }