private void addLocationAndPropertiesFileUrlField( SrcClass srcClass, FqnCacheNode<String> node ) { if( _file == null ) { return; } srcClass.addAnnotation( addSourcePositionAnnotation( node ) ); srcClass.addField( new SrcField( srcClass ) .name( FIELD_FILE_URL ) .modifiers( Modifier.STATIC | Modifier.FINAL ) .type( "String" ) .initializer( getFile() ) ); }
private void addLocationAndPropertiesFileUrlField( SrcClass srcClass, FqnCacheNode<String> node ) { if( _file == null ) { return; } srcClass.addAnnotation( addSourcePositionAnnotation( node ) ); srcClass.addField( new SrcField( srcClass ) .name( FIELD_FILE_URL ) .modifiers( Modifier.STATIC | Modifier.FINAL ) .type( "String" ) .initializer( getFile() ) ); }
private void addField( SrcClass srcClass, Symbol sym ) { Symbol.VarSymbol field = (Symbol.VarSymbol)sym; SrcField srcField = new SrcField( field.name.toString(), makeSrcType( field.type, sym, TargetType.FIELD, -1 ) ); if( sym.isEnum() ) { srcField.enumConst(); srcClass.addEnumConst( srcField ); } else { srcField.modifiers( field.getModifiers() ); if( Modifier.isFinal( (int)srcField.getModifiers() ) ) { srcField.initializer( new SrcRawExpression( getValueForType( sym.type ) ) ); } srcClass.addField( srcField ); } }
for( IFile file : _favsFiles ) srcClass.addField( new SrcField( FIELD_FILE_URL + i++, String.class ) .initializer( new SrcRawExpression( String.class, file.getPath().getFileSystemPathString() ) )
for( IFile file : _favsFiles ) srcClass.addField( new SrcField( FIELD_FILE_URL + i++, String.class ) .initializer( new SrcRawExpression( String.class, file.getPath().getFileSystemPathString() ) )
public static SrcClass genClass( String fqn, JSTNode jstNode ) { SrcClass clazz = new SrcClass( fqn, SrcClass.Kind.Class ); clazz.addField( new SrcField( "TEMPLATE_NODE", JSTNode.class ) .modifiers( Modifier.STATIC ) .initializer( new SrcRawExpression( ("manifold.js.JavascriptTemplate.initNode(\"" + fqn + "\")") ) ) ); clazz.addField( new SrcField( "ENGINE", ScriptEngine.class ) .modifiers( Modifier.STATIC ) .initializer( new SrcRawExpression( ("manifold.js.JavascriptTemplate.initEngine(TEMPLATE_NODE)") ) ) ); AbstractSrcMethod<SrcMethod> srcMethod = new SrcMethod() .name( "renderToString" ) .modifiers( Modifier.PUBLIC | Modifier.STATIC ) .returns( String.class ); List<SrcParameter> srcParameters = makeSrcParameters( jstNode, srcMethod ); srcMethod.body( new SrcStatementBlock() .addStatement( new SrcRawStatement() .rawText( "return manifold.js.JavascriptTemplate.renderToStringImpl(ENGINE, TEMPLATE_NODE" + generateArgList( srcParameters ) + ");" ) ) ); clazz.addMethod( srcMethod ); return clazz; }
static SrcClass genClass( String fqn, ProgramNode programNode ) { ClassNode classNode = programNode.getFirstChild( ClassNode.class ); SrcClass clazz = new SrcClass( fqn, SrcClass.Kind.Class ); clazz.addAnnotation( new SrcAnnotationExpression( SourcePosition.class ) .addArgument( "url", String.class, programNode.getUrl().toString() ) .addArgument( "feature", String.class, ManClassUtil.getShortClassName( fqn ) ) .addArgument( "offset", int.class, classNode.getStart().getOffset() ) .addArgument( "length", int.class, classNode.getEnd().getOffset() - classNode.getStart().getOffset() ) ); String superClass = classNode.getSuperClass(); if( superClass != null ) { clazz.superClass( superClass ); } clazz.imports( JavascriptClass.class ) .imports( SourcePosition.class ); clazz.addField( new SrcField( "ENGINE", ScriptEngine.class ) .modifiers( Modifier.PRIVATE | Modifier.STATIC | Modifier.VOLATILE ) .initializer( new SrcRawExpression( ("null") ) ) ); clazz.addField( new SrcField( "TIMESTAMP", long.class ) .modifiers( Modifier.PRIVATE | Modifier.STATIC | Modifier.VOLATILE ) .initializer( new SrcRawExpression( ("0") ) ) ); clazz.addField( new SrcField( "_context", ScriptObjectMirror.class ) ); addConstructor( clazz, classNode ); addUtilityMethods( clazz, classNode, fqn ); addMethods( fqn, clazz, classNode ); addProperties( fqn, clazz, classNode ); return clazz; }
public static SrcClass genClass( String fqn, JSTNode jstNode ) { SrcClass clazz = new SrcClass( fqn, SrcClass.Kind.Class ); clazz.addField( new SrcField( "TEMPLATE_NODE", JSTNode.class ) .modifiers( Modifier.STATIC ) .initializer( new SrcRawExpression( ("manifold.js.JavascriptTemplate.initNode(\"" + fqn + "\")") ) ) ); clazz.addField( new SrcField( "ENGINE", ScriptEngine.class ) .modifiers( Modifier.STATIC ) .initializer( new SrcRawExpression( ("manifold.js.JavascriptTemplate.initEngine(TEMPLATE_NODE)") ) ) ); AbstractSrcMethod<SrcMethod> srcMethod = new SrcMethod() .name( "renderToString" ) .modifiers( Modifier.PUBLIC | Modifier.STATIC ) .returns( String.class ); List<SrcParameter> srcParameters = makeSrcParameters( jstNode, srcMethod ); srcMethod.body( new SrcStatementBlock() .addStatement( new SrcRawStatement() .rawText( "return manifold.js.JavascriptTemplate.renderToStringImpl(ENGINE, TEMPLATE_NODE" + generateArgList( srcParameters ) + ");" ) ) ); clazz.addMethod( srcMethod ); return clazz; }
static SrcClass genClass( String fqn, ProgramNode programNode ) { ClassNode classNode = programNode.getFirstChild( ClassNode.class ); SrcClass clazz = new SrcClass( fqn, SrcClass.Kind.Class ); clazz.addAnnotation( new SrcAnnotationExpression( SourcePosition.class ) .addArgument( "url", String.class, programNode.getUrl().toString() ) .addArgument( "feature", String.class, ManClassUtil.getShortClassName( fqn ) ) .addArgument( "offset", int.class, classNode.getStart().getOffset() ) .addArgument( "length", int.class, classNode.getEnd().getOffset() - classNode.getStart().getOffset() ) ); String superClass = classNode.getSuperClass(); if( superClass != null ) { clazz.superClass( superClass ); } clazz.imports( JavascriptClass.class ) .imports( SourcePosition.class ); clazz.addField( new SrcField( "ENGINE", ScriptEngine.class ) .modifiers( Modifier.PRIVATE | Modifier.STATIC | Modifier.VOLATILE ) .initializer( new SrcRawExpression( ("null") ) ) ); clazz.addField( new SrcField( "TIMESTAMP", long.class ) .modifiers( Modifier.PRIVATE | Modifier.STATIC | Modifier.VOLATILE ) .initializer( new SrcRawExpression( ("0") ) ) ); clazz.addField( new SrcField( "_context", ScriptObjectMirror.class ) ); addConstructor( clazz, classNode ); addUtilityMethods( clazz, classNode, fqn ); addMethods( fqn, clazz, classNode ); addProperties( fqn, clazz, classNode ); return clazz; }
static SrcClass genProgram( String fqn, ProgramNode programNode ) { SrcClass clazz = new SrcClass( fqn, SrcClass.Kind.Class ).superClass( JavascriptProgram.class ) .imports( SourcePosition.class ); clazz.addField( new SrcField( "ENGINE", ScriptEngine.class ) .modifiers( Modifier.STATIC ) .initializer( new SrcRawExpression( ("init(\"" + fqn + "\")") ) ) ); clazz.addConstructor( new SrcConstructor().modifiers( Modifier.PRIVATE ).body( new SrcStatementBlock() ) ); for( FunctionNode node : programNode.getChildren( FunctionNode.class ) ) { AbstractSrcMethod<SrcMethod> srcMethod = new SrcMethod() .name( node.getName() ) .modifiers( Modifier.STATIC | Modifier.PUBLIC ) .returns( node.getReturnType() ); List<SrcParameter> srcParameters = makeSrcParameters( node, srcMethod ); srcMethod.body( new SrcStatementBlock() .addStatement( new SrcRawStatement() .rawText( "return invoke(ENGINE, \"" + node.getName() + "\"" + generateArgList( srcParameters ) + ");" ) ) ); clazz.addMethod( srcMethod ); } return clazz; }
public SrcClass make( SrcClass srcClass, FqnCacheNode<String> node ) { for( FqnCacheNode<String> childNode : node.getChildren() ) { SrcType type = new SrcType( childNode.isLeaf() ? "String" : childNode.getName() ); SrcField propertyField = new SrcField( srcClass ) .name( childNode.getName() ) .modifiers( Modifier.PUBLIC | Modifier.FINAL | (srcClass.getEnclosingClass() == null ? Modifier.STATIC : 0) ) .type( type ) .initializer( childNode.isLeaf() ? new SrcRawExpression( new SrcType( "String" ), childNode.getUserData() ) : new SrcRawExpression( "new " + type + "()" ) ); if( _file != null ) { propertyField.addAnnotation( addSourcePositionAnnotation( childNode ) ); } srcClass.addField( propertyField ); if( !childNode.isLeaf() ) { SrcClass innerSrcClass = new SrcClass( childNode.getName(), srcClass, SrcClass.Kind.Class ) .modifiers( Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL ); srcClass.addInnerClass( make( innerSrcClass, childNode ) ); } } addMethods( srcClass, node ); return srcClass; }
return new SrcClass( _fqn, SrcClass.Kind.Class ).imports( URL.class, SourcePosition.class ) .superClass( new SrcType( ImageIcon.class ) ) .addField( new SrcField( "INSTANCE", simpleName ).modifiers( Modifier.STATIC ) ) .addConstructor( new SrcConstructor() .addParam( new SrcParameter( "url" )
public SrcClass make( SrcClass srcClass, FqnCacheNode<String> node ) { for( FqnCacheNode<String> childNode : node.getChildren() ) { SrcType type = new SrcType( childNode.isLeaf() ? "String" : childNode.getName() ); SrcField propertyField = new SrcField( srcClass ) .name( childNode.getName() ) .modifiers( Modifier.PUBLIC | Modifier.FINAL | (srcClass.getEnclosingClass() == null ? Modifier.STATIC : 0) ) .type( type ) .initializer( childNode.isLeaf() ? new SrcRawExpression( new SrcType( "String" ), childNode.getUserData() ) : new SrcRawExpression( "new " + type + "()" ) ); if( _file != null ) { propertyField.addAnnotation( addSourcePositionAnnotation( childNode ) ); } srcClass.addField( propertyField ); if( !childNode.isLeaf() ) { SrcClass innerSrcClass = new SrcClass( childNode.getName(), srcClass, SrcClass.Kind.Class ) .modifiers( Modifier.PUBLIC | Modifier.STATIC | Modifier.FINAL ); srcClass.addInnerClass( make( innerSrcClass, childNode ) ); } } addMethods( srcClass, node ); return srcClass; }
return new SrcClass( _fqn, SrcClass.Kind.Class ).imports( URL.class, SourcePosition.class ) .superClass( new SrcType( ImageIcon.class ) ) .addField( new SrcField( "INSTANCE", simpleName ).modifiers( Modifier.STATIC ) ) .addConstructor( new SrcConstructor() .addParam( new SrcParameter( "url" )
static SrcClass genProgram( String fqn, ProgramNode programNode ) { SrcClass clazz = new SrcClass( fqn, SrcClass.Kind.Class ).superClass( JavascriptProgram.class ) .imports( SourcePosition.class ); clazz.addField( new SrcField( "ENGINE", ScriptEngine.class ) .modifiers( Modifier.STATIC ) .initializer( new SrcRawExpression( ("init(\"" + fqn + "\")") ) ) ); clazz.addConstructor( new SrcConstructor().modifiers( Modifier.PRIVATE ).body( new SrcStatementBlock() ) ); for( FunctionNode node : programNode.getChildren( FunctionNode.class ) ) { AbstractSrcMethod<SrcMethod> srcMethod = new SrcMethod() .name( node.getName() ) .modifiers( Modifier.STATIC | Modifier.PUBLIC ) .returns( node.getReturnType() ); List<SrcParameter> srcParameters = makeSrcParameters( node, srcMethod ); srcMethod.body( new SrcStatementBlock() .addStatement( new SrcRawStatement() .rawText( "return invoke(ENGINE, \"" + node.getName() + "\"" + generateArgList( srcParameters ) + ");" ) ) ); clazz.addMethod( srcMethod ); } return clazz; }