All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.prezi.spaghetti.haxe.HaxeDefinitionIteratorVisitor.groovy Maven / Gradle / Ivy

package com.prezi.spaghetti.haxe

import com.prezi.spaghetti.ast.ConstNode
import com.prezi.spaghetti.ast.EnumNode
import com.prezi.spaghetti.ast.InterfaceNode
import com.prezi.spaghetti.ast.ModuleVisitorBase
import com.prezi.spaghetti.ast.NamedNode
import com.prezi.spaghetti.ast.StructNode

class HaxeDefinitionIteratorVisitor extends ModuleVisitorBase {

	private final File outputDirectory
	private final String header
	private final String packageName

	HaxeDefinitionIteratorVisitor(File outputDirectory, String header, String packageName) {
		this.outputDirectory = outputDirectory
		this.header = header
		this.packageName = packageName
	}

	private void createSourceFile(NamedNode node, ModuleVisitorBase visitor) {
		def contents = node.accept(visitor)
		HaxeUtils.createHaxeSourceFile(header, packageName, node.name, outputDirectory, contents)
	}

	@Override
	Void visitInterfaceNode(InterfaceNode node) {
		createSourceFile(node, new HaxeInterfaceGeneratorVisitor())
		return null
	}

	@Override
	Void visitEnumNode(EnumNode node) {
		createSourceFile(node, new HaxeEnumGeneratorVisitor())
		return null
	}

	@Override
	Void visitStructNode(StructNode node) {
		createSourceFile(node, new HaxeStructGeneratorVisitor())
		return null
	}

	@Override
	Void visitConstNode(ConstNode node) {
		createSourceFile(node, new HaxeConstGeneratorVisitor())
		return null
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy