package fr.adrienbrault.idea.symfony2plugin.templating.variable;
import com.intellij.openapi.project.Project;
import com.jetbrains.php.lang.psi.elements.PhpClass;
import com.jetbrains.php.lang.psi.elements.PhpNamedElement;
import fr.adrienbrault.idea.symfony2plugin.templating.variable.dict.PsiVariable;
import fr.adrienbrault.idea.symfony2plugin.util.PhpElementsUtil;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class TwigTypeContainer {
private PhpNamedElement phpNamedElement;
private String stringElement;
private Object dataHolder;
public TwigTypeContainer(PhpNamedElement phpNamedElement) {
this.phpNamedElement = phpNamedElement;
}
public TwigTypeContainer(String stringElement) {
this.stringElement = stringElement;
}
@Nullable
public PhpNamedElement getPhpNamedElement() {
return phpNamedElement;
}
@Nullable
public String getStringElement() {
return stringElement;
}
public static Collection<TwigTypeContainer> fromCollection(Project project, List<PsiVariable> psiVariables) {
List<TwigTypeContainer> twigTypeContainerList = new ArrayList<>();
for(PsiVariable phpNamedElement :psiVariables) {
Collection<PhpClass> phpClass = PhpElementsUtil.getClassFromPhpTypeSet(project, phpNamedElement.getTypes());
if(phpClass.size() > 0) {
twigTypeContainerList.add(new TwigTypeContainer(phpClass.iterator().next()));
}
}
return twigTypeContainerList;
}
public TwigTypeContainer withDataHolder(Object object) {
this.dataHolder = object;
return this;
}
public Object getDataHolder() {
return dataHolder;
}
}