Changeset 426


Ignore:
Timestamp:
Jun 13, 2010 7:08:56 PM (14 years ago)
Author:
Anya Helene Bagge
Message:
  • Implement proper build path
  • Subclass Rascal's URI resolvers with some improvements
Location:
trunk/MagnoliaPlugin
Files:
12 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagnoliaPlugin/src/org/magnolialang/eclipse/MagnoliaPlugin.java

    r424 r426  
    1010import org.eclipse.imp.runtime.PluginBase;
    1111import org.magnolialang.load.ProjectURIResolver;
     12import org.magnolialang.uri.*;
    1213import org.osgi.framework.Bundle;
    1314import org.osgi.framework.BundleContext;
    14 import org.rascalmpl.uri.*;
     15import org.magnolialang.uri.*;
    1516import sglr.LegacySGLRInvoker;
    1617import sglr.SGLRInvoker;
  • trunk/MagnoliaPlugin/src/org/magnolialang/load/ModuleLoader.java

    r424 r426  
    1313import org.magnolialang.env.MagnoliaEnvironment;
    1414import org.magnolialang.parsetree.TreeImploder;
     15import org.magnolialang.uri.URIResolverRegistry;
     16
    1517import static org.magnolialang.parsetree.XaTreeAdapter.*;
    1618import org.rascalmpl.interpreter.staticErrors.SyntaxError;
    17 import org.rascalmpl.uri.URIResolverRegistry;
    1819import org.rascalmpl.values.ValueFactoryFactory;
    1920import org.rascalmpl.values.errors.SubjectAdapter;
     
    3637        private final boolean saveParsedModules = (System.getProperty("rascal.options.saveBinaries") != null ? System.getProperty("rascal.options.saveBinaries").equals("true") : false);
    3738        private ISourceProject project;
     39        private MagnoliaBuildPath buildPath;
    3840       
    3941        public ModuleLoader(){
     
    4850                this.parser = parser;
    4951                this.project = project;
     52                this.buildPath = new MagnoliaBuildPath(null);
     53                if(project != null)
     54                        this.buildPath.addPath(ProjectURIResolver.constructProjectURI(project, new Path("")));
    5055        }
    5156
     
    138143                                                        if(isCons(imp, "ImportAll", 1)) {
    139144                                                                String name = yield(getArg(imp, 0));
    140                                                                 URI uri = ProjectURIResolver.constructProjectURI(project, new Path(name).addFileExtension("mg"));
     145                                                                URI uri = buildPath.find(name);
    141146                                                                loadModule(uri, env);
    142                                                                 System.out.println("import " + name);
     147                                                                System.out.println("import " + uri);
    143148                                                        }
    144149                                                }
  • trunk/MagnoliaPlugin/src/org/magnolialang/load/ProjectURIResolver.java

    r359 r426  
    1616import org.eclipse.core.runtime.CoreException;
    1717import org.eclipse.core.runtime.IPath;
     18import org.eclipse.core.runtime.Path;
    1819import org.eclipse.imp.model.ISourceProject;
    1920import org.magnolialang.eclipse.MagnoliaPlugin;
     21import org.magnolialang.uri.IURIInputStreamResolver;
     22import org.magnolialang.uri.IURIOutputStreamResolver;
    2023import org.rascalmpl.uri.BadURIException;
    21 import org.rascalmpl.uri.IURIInputStreamResolver;
    22 import org.rascalmpl.uri.IURIOutputStreamResolver;
    2324
    2425public class ProjectURIResolver implements IURIInputStreamResolver, IURIOutputStreamResolver {
     
    2728                try{
    2829                        // making sure that spaces in 'path' are properly escaped
    29                         return new URI("project://"+project.getName()+"/"+URLEncoder.encode(path.toOSString(),"UTF8"));
     30                        return new URI("project", project.getName(), path.makeAbsolute().toString(), null);
    3031                }catch(URISyntaxException usex){
    3132                        throw new BadURIException(usex);
    32                 } catch (UnsupportedEncodingException e) {
    33                         MagnoliaPlugin.getInstance().logException(e.getMessage(), e);
    34                         return null;
    3533                }
     34        //      } catch (UnsupportedEncodingException e) {
     35        //              MagnoliaPlugin.getInstance().logException(e.getMessage(), e);
     36        //              return null;
     37        //      }
    3638        }
    3739
     
    7880        }
    7981
     82        @Override
     83        public long lastModified(URI uri) {
     84                try {
     85                        return resolve(uri).getLocalTimeStamp();
     86                } catch (MalformedURLException e) {
     87                        return 0;
     88                } catch (IOException e) {
     89                        return 0;
     90                }
     91        }
     92
    8093}
  • trunk/MagnoliaPlugin/src/org/magnolialang/parsetree/XaTreeAdapter.java

    r424 r426  
    213213                                                Type type = ((IConstructor)token).getConstructorType();
    214214                                                if(type == Type_Token || type == Type_Space || type == Type_Comment) {
    215                                                         result.append(((IConstructor)token).get("chars"));
     215                                                        result.append(((IString)((IConstructor)token).get("chars")).getValue());
    216216                                                }
    217217                                                else {
Note: See TracChangeset for help on using the changeset viewer.