Package gw.internal.gosu.template
Class TemplateGenerator
- java.lang.Object
-
- gw.internal.gosu.template.TemplateGenerator
-
- All Implemented Interfaces:
ITemplateGenerator
public class TemplateGenerator extends java.lang.Object implements ITemplateGenerator
A template generator employing Gosu. Works much like JSP -- uses <% script %> for scriptlets and <%= expr %> for expressions. Also supports JSP comments like this: <%-- comment here --%> Templates can be any type e.g., XML, HTML, text, whatever.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classTemplateGenerator.LockedDownSymbolprivate classTemplateGenerator.RuntimeData
-
Field Summary
-
Fields inherited from interface gw.lang.parser.template.ITemplateGenerator
PRINT_COMPRESSED_METHOD, PRINT_METHOD, PRINT_RANGE_METHOD
-
-
Constructor Summary
Constructors Modifier Constructor Description privateTemplateGenerator(java.io.Reader reader)WARNING: This will consume the reader and close it!
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddExpression(java.lang.StringBuilder strTarget, java.lang.String strExpression, int iLineNumber)private voidaddRefText(java.lang.StringBuilder sbTarget, int iStart, int iEnd)private voidaddScriptlet(java.lang.StringBuilder strTarget, java.lang.String strScript, int iLineNumber)private voidaddStaticSymbols(ISymbolTable symbolTable, GosuParser parser, IGosuClassInternal supertype)private voidaddText(java.lang.StringBuilder strTarget, java.lang.String strText)voidcompile(ISymbolTable symTable)voidcompile(Stack<IScriptPartId> scriptPartIdStack, ISymbolTable symTable, java.util.Map<java.lang.String,java.util.List<IFunctionSymbol>> dfsDeclByName, ITypeUsesMap typeUsesMap, Stack<BlockExpression> blocks, ContextInferenceManager ctxInferenceMgr)private Programcompile(Stack<IScriptPartId> scriptPartIdStack, java.lang.String strCompiledSource, ISymbolTable symbolTable, java.util.Map<java.lang.String,java.util.List<IFunctionSymbol>> dfsDeclByName, ITypeUsesMap typeUsesMap, Stack<BlockExpression> blocks, ContextInferenceManager ctxInferenceMgr)private voidcompileIfNotCompiled()private java.lang.StringescapeForGosuStringLiteral(java.lang.String strText)voidexecute(java.io.Writer writer, ISymbolTable symbolTable)voidexecute(java.io.Writer writer, StringEscaper escaper, ISymbolTable symTable)private IExternalSymbolMapextractExternalSymbols(ISymbolTable compileTimeSymbolTable, ISymbolTable runtimeSymbolTable)static voidgenerateTemplate(java.io.Reader readerTemplate, java.io.Writer writerOut, ISymbolTable symTable)Generates a template of any format having embedded Gosu.static voidgenerateTemplate(java.io.Reader readerTemplate, java.io.Writer writerOut, ISymbolTable symTable, boolean strict)Generates a template of any format having embedded Gosu.private intgetColumnForIndex(java.lang.String strSource, int iIndex)java.lang.StringgetFullyQualifiedTypeName()java.util.List<ISymbol>getParameters()ProgramgetProgram()private static TemplateGenerator.RuntimeDatagetRuntimeData()java.lang.StringgetSource()ITypegetSuperType()static TemplateGeneratorgetTemplate(java.io.Reader readerTemplate)static TemplateGeneratorgetTemplate(java.io.Reader readerTemplate, java.lang.String fullyQualifiedName)java.util.List<TemplateParseException>getTemplateSyntaxProblems()private intignoreTrailingLineSeparator(java.lang.String strSource, int iIndex)booleanisForStringLiteral()booleanisValid()private static voidpopRuntimeData()static voidprintContent(java.lang.String strContent, boolean escape)For internal use only!!static voidprintRange(int iStart, int iEnd)private voidprocessDirective(java.lang.String strScript, int lineNumber, int column, int offset)private static voidpushRuntimeData(TemplateGenerator.RuntimeData pair)private voidputSymbols(ISymbolTable symTable, java.util.HashMap<java.lang.String,ISymbol> externalSymbolsMap)voidsetContextInferenceManager(ContextInferenceManager ctxInferenceMgr)voidsetDisableAlternative(boolean disableAlternative)voidsetForStringLiteral(boolean bForStringLiteralTemplate)private voidsetFqn(java.lang.String fullyQualifiedName)private voidsetHasOwnSymbolScope(boolean hasSymbolScope)voidsetUseStudioEditorParser(boolean useStudioEditorParser)java.lang.StringtoString()private java.lang.StringtransformTemplate(java.lang.String strSource, java.util.List<TemplateParseException> exceptions)voidverify(IGosuParser parser)private IProgramverify(IGosuParser parser, boolean bDoNotThrowParseResultException)voidverify(IGosuParser parser, java.util.Map<java.lang.String,java.util.List<IFunctionSymbol>> dfsDeclByName, ITypeUsesMap typeUsesMap)private IProgramverify(IGosuParser parser, java.util.Map<java.lang.String,java.util.List<IFunctionSymbol>> dfsDeclByName, ITypeUsesMap typeUsesMap, boolean bDoNotThrowParseResultsException)
-
-
-
Field Detail
-
GS_TEMPLATE
public static final java.lang.String GS_TEMPLATE
- See Also:
- Constant Field Values
-
GS_TEMPLATE_PARSED
public static final java.lang.String GS_TEMPLATE_PARSED
- See Also:
- Constant Field Values
-
SCRIPTLET_BEGIN
public static final java.lang.String SCRIPTLET_BEGIN
- See Also:
- Constant Field Values
-
SCRIPTLET_END
public static final java.lang.String SCRIPTLET_END
- See Also:
- Constant Field Values
-
EXPRESSION_SUFFIX
public static final char EXPRESSION_SUFFIX
- See Also:
- Constant Field Values
-
DECLARATION_SUFFIX
public static final char DECLARATION_SUFFIX
- See Also:
- Constant Field Values
-
DIRECTIVE_SUFFIX
public static final char DIRECTIVE_SUFFIX
- See Also:
- Constant Field Values
-
COMMENT_BEGIN
public static final java.lang.String COMMENT_BEGIN
- See Also:
- Constant Field Values
-
COMMENT_END
public static final java.lang.String COMMENT_END
- See Also:
- Constant Field Values
-
ALTERNATE_EXPRESSION_BEGIN
public static final java.lang.String ALTERNATE_EXPRESSION_BEGIN
- See Also:
- Constant Field Values
-
ALTERNATE_EXPRESSION_END
public static final java.lang.String ALTERNATE_EXPRESSION_END
- See Also:
- Constant Field Values
-
ESCAPED_SCRIPTLET_MARKER
public static final char ESCAPED_SCRIPTLET_MARKER
- See Also:
- Constant Field Values
-
ESCAPED_SCRIPTLET_BEGIN_CHAR
public static final char ESCAPED_SCRIPTLET_BEGIN_CHAR
- See Also:
- Constant Field Values
-
ESCAPED_ALTERNATE_EXPRESSION_BEGIN_CHAR
public static final char ESCAPED_ALTERNATE_EXPRESSION_BEGIN_CHAR
- See Also:
- Constant Field Values
-
SCRIPTLET_BEGIN_LEN
public static final int SCRIPTLET_BEGIN_LEN
-
SCRIPTLET_END_LEN
public static final int SCRIPTLET_END_LEN
-
COMMENT_BEGIN_LEN
public static final int COMMENT_BEGIN_LEN
-
COMMENT_END_LEN
public static final int COMMENT_END_LEN
-
ALTERNATE_EXPRESSION_BEGIN_LEN
public static final int ALTERNATE_EXPRESSION_BEGIN_LEN
-
ALTERNATE_EXPRESSION_END_LEN
public static final int ALTERNATE_EXPRESSION_END_LEN
-
PRINT_CONTENT_SYMBOL
public static final LockingLazyVar<ISymbol> PRINT_CONTENT_SYMBOL
-
PRINT_RANGE_SYMBOL
public static final LockingLazyVar<ISymbol> PRINT_RANGE_SYMBOL
-
TEMPLATE_LINE_NUMBER
public static final java.lang.String TEMPLATE_LINE_NUMBER
- See Also:
- Constant Field Values
-
g_runtimeData
private static java.lang.ThreadLocal<Stack<TemplateGenerator.RuntimeData>> g_runtimeData
-
SUBSTR_CHUNKSIZE
public static final int SUBSTR_CHUNKSIZE
- See Also:
- Constant Field Values
-
_fqn
private java.lang.String _fqn
-
_scriptStr
private java.lang.String _scriptStr
-
_params
private java.util.List<ISymbol> _params
-
_program
private Program _program
-
_compileTimeSymbolTable
private ISymbolTable _compileTimeSymbolTable
-
_supertype
private IType _supertype
-
_useStudioEditorParser
private boolean _useStudioEditorParser
-
_disableAlternative
private boolean _disableAlternative
-
_hasOwnSymbolScope
private boolean _hasOwnSymbolScope
-
_ctxInferenceMgr
private ContextInferenceManager _ctxInferenceMgr
-
_bStringLiteralTemplate
private boolean _bStringLiteralTemplate
-
-
Method Detail
-
generateTemplate
public static void generateTemplate(java.io.Reader readerTemplate, java.io.Writer writerOut, ISymbolTable symTable) throws TemplateParseExceptionGenerates a template of any format having embedded Gosu.- Parameters:
readerTemplate- The source of the template.writerOut- Where the output should go.symTable- The symbol table to use.- Throws:
TemplateParseException- on execution exception
-
generateTemplate
public static void generateTemplate(java.io.Reader readerTemplate, java.io.Writer writerOut, ISymbolTable symTable, boolean strict) throws TemplateParseExceptionGenerates a template of any format having embedded Gosu.- Parameters:
readerTemplate- The source of the template.writerOut- Where the output should go.symTable- The symbol table to use.strict- whether to allow althernative template- Throws:
TemplateParseException- on execution exception
-
getTemplate
public static TemplateGenerator getTemplate(java.io.Reader readerTemplate)
-
getTemplate
public static TemplateGenerator getTemplate(java.io.Reader readerTemplate, java.lang.String fullyQualifiedName)
-
setHasOwnSymbolScope
private void setHasOwnSymbolScope(boolean hasSymbolScope)
-
getProgram
public Program getProgram()
- Specified by:
getProgramin interfaceITemplateGenerator
-
getRuntimeData
private static TemplateGenerator.RuntimeData getRuntimeData()
-
pushRuntimeData
private static void pushRuntimeData(TemplateGenerator.RuntimeData pair)
-
popRuntimeData
private static void popRuntimeData()
-
execute
public void execute(java.io.Writer writer, ISymbolTable symbolTable) throws TemplateParseException- Specified by:
executein interfaceITemplateGenerator- Throws:
TemplateParseException
-
execute
public void execute(java.io.Writer writer, StringEscaper escaper, ISymbolTable symTable) throws TemplateParseException- Specified by:
executein interfaceITemplateGenerator- Throws:
TemplateParseException
-
compile
public void compile(ISymbolTable symTable) throws TemplateParseException
- Specified by:
compilein interfaceITemplateGenerator- Throws:
TemplateParseException
-
compile
public void compile(Stack<IScriptPartId> scriptPartIdStack, ISymbolTable symTable, java.util.Map<java.lang.String,java.util.List<IFunctionSymbol>> dfsDeclByName, ITypeUsesMap typeUsesMap, Stack<BlockExpression> blocks, ContextInferenceManager ctxInferenceMgr) throws TemplateParseException
- Throws:
TemplateParseException
-
compile
private Program compile(Stack<IScriptPartId> scriptPartIdStack, java.lang.String strCompiledSource, ISymbolTable symbolTable, java.util.Map<java.lang.String,java.util.List<IFunctionSymbol>> dfsDeclByName, ITypeUsesMap typeUsesMap, Stack<BlockExpression> blocks, ContextInferenceManager ctxInferenceMgr) throws ParseResultsException
- Returns:
- the program to execute
- Throws:
ParseExceptionParseResultsException
-
addStaticSymbols
private void addStaticSymbols(ISymbolTable symbolTable, GosuParser parser, IGosuClassInternal supertype)
-
verify
public void verify(IGosuParser parser, java.util.Map<java.lang.String,java.util.List<IFunctionSymbol>> dfsDeclByName, ITypeUsesMap typeUsesMap) throws ParseResultsException
- Throws:
ParseResultsException
-
verify
private IProgram verify(IGosuParser parser, java.util.Map<java.lang.String,java.util.List<IFunctionSymbol>> dfsDeclByName, ITypeUsesMap typeUsesMap, boolean bDoNotThrowParseResultsException) throws ParseResultsException
- Throws:
ParseResultsException
-
verify
public void verify(IGosuParser parser) throws ParseResultsException
- Specified by:
verifyin interfaceITemplateGenerator- Throws:
ParseResultsException
-
verify
private IProgram verify(IGosuParser parser, boolean bDoNotThrowParseResultException) throws ParseResultsException
- Throws:
ParseResultsException
-
getTemplateSyntaxProblems
public java.util.List<TemplateParseException> getTemplateSyntaxProblems()
- Specified by:
getTemplateSyntaxProblemsin interfaceITemplateGenerator
-
transformTemplate
private java.lang.String transformTemplate(java.lang.String strSource, java.util.List<TemplateParseException> exceptions)
-
ignoreTrailingLineSeparator
private int ignoreTrailingLineSeparator(java.lang.String strSource, int iIndex)
-
processDirective
private void processDirective(java.lang.String strScript, int lineNumber, int column, int offset) throws TemplateParseException- Throws:
TemplateParseException
-
addText
private void addText(java.lang.StringBuilder strTarget, java.lang.String strText)
-
addRefText
private void addRefText(java.lang.StringBuilder sbTarget, int iStart, int iEnd)
-
addExpression
private void addExpression(java.lang.StringBuilder strTarget, java.lang.String strExpression, int iLineNumber)
-
addScriptlet
private void addScriptlet(java.lang.StringBuilder strTarget, java.lang.String strScript, int iLineNumber)
-
escapeForGosuStringLiteral
private java.lang.String escapeForGosuStringLiteral(java.lang.String strText)
-
getColumnForIndex
private int getColumnForIndex(java.lang.String strSource, int iIndex)
-
printContent
public static void printContent(java.lang.String strContent, boolean escape)For internal use only!!
-
printRange
public static void printRange(int iStart, int iEnd)
-
setDisableAlternative
public void setDisableAlternative(boolean disableAlternative)
-
setContextInferenceManager
public void setContextInferenceManager(ContextInferenceManager ctxInferenceMgr)
-
setForStringLiteral
public void setForStringLiteral(boolean bForStringLiteralTemplate)
-
isForStringLiteral
public boolean isForStringLiteral()
-
isValid
public boolean isValid()
- Specified by:
isValidin interfaceITemplateGenerator
-
setFqn
private void setFqn(java.lang.String fullyQualifiedName)
-
getFullyQualifiedTypeName
public java.lang.String getFullyQualifiedTypeName()
- Specified by:
getFullyQualifiedTypeNamein interfaceITemplateGenerator
-
getParameters
public java.util.List<ISymbol> getParameters()
- Specified by:
getParametersin interfaceITemplateGenerator
-
compileIfNotCompiled
private void compileIfNotCompiled()
-
getSuperType
public IType getSuperType()
- Specified by:
getSuperTypein interfaceITemplateGenerator
-
setUseStudioEditorParser
public void setUseStudioEditorParser(boolean useStudioEditorParser)
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getSource
public java.lang.String getSource()
- Specified by:
getSourcein interfaceITemplateGenerator
-
extractExternalSymbols
private IExternalSymbolMap extractExternalSymbols(ISymbolTable compileTimeSymbolTable, ISymbolTable runtimeSymbolTable)
-
putSymbols
private void putSymbols(ISymbolTable symTable, java.util.HashMap<java.lang.String,ISymbol> externalSymbolsMap)
-
-