package net.sf.eclipsefp.haskell.buildwrapper.types; import java.util.ArrayList; import java.util.List; import net.sf.eclipsefp.haskell.util.LangUtil; import org.eclipse.core.resources.IFile; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; /** * module import spec * @author JP Moresmau * */ public class ImportDef { private String module; private Location loc; private boolean qualified; private boolean hiding; private String alias; private List<ImportSpecDef> children=null; public ImportDef(String module, Location loc, boolean qualified, boolean hiding, String alias) { super(); this.module = module; this.loc = loc; this.qualified = qualified; this.hiding = hiding; this.alias = alias; } public ImportDef(IFile f,JSONObject obj) throws JSONException{ module=obj.getString("m"); this.loc=new Location(f,obj.getJSONArray("l")); qualified=obj.optBoolean("q", false); hiding=obj.optBoolean("h", false); alias=obj.optString("a"); JSONArray arr=obj.optJSONArray("c"); if (arr!=null){ children=new ArrayList<>(); for (int a=0;a<arr.length();a++){ children.add(new ImportSpecDef(f,arr.getJSONObject(a))); } } } @Override public String toString() { StringBuilder sb=new StringBuilder(); sb.append("import "); if (qualified){ sb.append("qualified "); } sb.append(module); sb.append(" "); if (alias!=null && alias.length()>0){ sb.append("as "+alias); } if (hiding){ sb.append("hiding "); } if (children!=null){ sb.append("("); sb.append(LangUtil.join(children, ",")); sb.append(")"); } return sb.toString(); } public String getModule() { return module; } public void setModule(String module) { this.module = module; } public Location getLocation() { return loc; } public void setLocation(Location loc) { this.loc = loc; } public boolean isQualified() { return qualified; } public void setQualified(boolean qualified) { this.qualified = qualified; } public boolean isHiding() { return hiding; } public void setHiding(boolean hiding) { this.hiding = hiding; } public String getAlias() { return alias; } public void setAlias(String alias) { this.alias = alias; } public List<ImportSpecDef> getChildren() { return children; } public void setChildren(List<ImportSpecDef> children) { this.children = children; } }