/*******************************************************************************
* Copyright (c) 2004 Lukas Larsson and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Lukas Larsson
*******************************************************************************/
package org.erlide.ui.wizards.templates;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.jface.text.templates.TemplateContext;
import org.eclipse.jface.text.templates.TemplateVariable;
public class ExportsVariableResolver extends FunctionVariableResolver {
private static final List<FunctionVariableResolver> fInstances = new ArrayList<>();
public ExportsVariableResolver() {
fInstances.add(this);
}
public static ExportsVariableResolver getDefault() {
if (fInstances.isEmpty()) {
fInstances.add(new ExportsVariableResolver());
}
return (ExportsVariableResolver) fInstances.get(0);
}
public void addFunction(final String name, final int arity) {
for (final Object element0 : fInstances) {
final ExportsVariableResolver element = (ExportsVariableResolver) element0;
element.doAddFunction(name, arity);
}
}
public void clearFunctions() {
for (final Object element0 : fInstances) {
final ExportsVariableResolver element = (ExportsVariableResolver) element0;
element.doClearFunctions();
}
}
@Override
public void resolve(final TemplateVariable variable, final TemplateContext context) {
final StringBuilder buff = new StringBuilder();
for (final Iterator<Object[]> iter = functions.iterator(); iter.hasNext();) {
final String[] part = buff.toString().split("\\n");
if (part[part.length - 1].length() > 60) {
buff.append('\n');
}
final Object[] element = iter.next();
buff.append(element[0] + "/" + element[1]);
if (iter.hasNext()) {
buff.append(", ");
}
}
variable.setValue(buff.toString());
}
}