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

org.hisrc.jscm.codemodel.writer.SourceElementWriter Maven / Gradle / Ivy

The newest version!
package org.hisrc.jscm.codemodel.writer;

import java.io.IOException;
import java.util.List;

import org.hisrc.jscm.codemodel.JSFunctionDeclaration;
import org.hisrc.jscm.codemodel.JSSourceElement;
import org.hisrc.jscm.codemodel.JSSourceElementVisitor;
import org.hisrc.jscm.codemodel.expression.JSVariable;
import org.hisrc.jscm.codemodel.lang.Validate;
import org.hisrc.jscm.codemodel.statement.JSStatement;

public class SourceElementWriter implements
		JSSourceElementVisitor {

	private final CodeWriter f;

	public SourceElementWriter(CodeWriter formatter) {
		Validate.notNull(formatter);
		this.f = formatter;
	}

	@Override
	public CodeWriter visitFunctionDeclaration(JSFunctionDeclaration value)
			throws IOException {
		f.keyword("function").whiteSpace();

		f.identifier(value.getName());

		f.openRoundBracket();
		for (int index = 0; index < value.getParameters().size(); index++) {
			final JSVariable parameter = value.getParameters().get(index);
			if (index > 0) {
				f.comma().whiteSpace();
			}
			f.identifier(parameter.getName());
		}
		f.closeRoundBracket();
		f.whiteSpace();
		f.openCurlyBracket().lineTerminator();

		final CodeWriter fi = f.indented();
		final List sourceElements = value.getBody()
				.getSourceElements();

		for (int index = 0; index < sourceElements.size(); index++) {
			final JSSourceElement sourceElement = sourceElements.get(index);
			fi.sourceElement(sourceElement);
			fi.lineTerminator();
		}

		f.closeCurlyBracket();
		return f;
	}

	@Override
	public CodeWriter visitStatement(JSStatement value) throws IOException {
		return f.statement(value);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy