// Path: gulp/tern.eclipse.ide.gulp/src/tern/eclipse/ide/gulp/internal/query/TernGulpTaskQuery.java
// public class TernGulpTaskQuery extends TernQuery {
// 
// 	public TernGulpTaskQuery(String name) {
// 		super("gulp-task");
// 		super.add("name", name);
// 	}
// 
// 	public static Location getLocation(ITask task, String text) {
// 		IFile gulpFile = task.getBuildFile().getBuildFileResource();
// 		String taskName = task.getName();
// 		return getLocation(gulpFile, taskName, text);
// 	}
// 
// 	public static Location getLocation(IFile gulpFile, String taskName,
// 			String text) {
// 		try {
// 			IIDETernProject ternProject = TernCorePlugin
// 					.getTernProject(gulpFile.getProject());
// 			TernGulpTaskQuery query = new TernGulpTaskQuery(taskName);
// 			ITernFile ternFile = text != null ? new TernTextFile(gulpFile, text)
// 					: ternProject.getFile(gulpFile);
// 			query.setFile(ternFile.getFileName());
// 			LocationCollector collector = new LocationCollector();
// 			ternProject.request(query, ternFile, collector);
// 			return collector.getLocation();
// 		} catch (Exception e) {
// 			Logger.logException(e);
// 		}
// 		return null;
// 	}
// 
// 	private static class LocationCollector implements ITernDefinitionCollector {
// 
// 		private Location location;
// 
// 		@Override
// 		public void setDefinition(String filename, Long start, Long end) {
// 			if (start != null) {
// 				int s = start.intValue();
// 				int length = end != null ? end.intValue() - s : 0;
// 				location = new Location(s, length);
// 			}
// 		}
// 
// 		public Location getLocation() {
// 			return location;
// 		}
// 	}
// 
// }
// 
// Path: core/fr.opensagres.eclipse.jsbuild.core/src/fr/opensagres/eclipse/jsbuild/core/IJSBuildFile.java
// public interface IJSBuildFile extends IJSBuildFileNode {
// 
// 	/**
// 	 * Returns the default task and null otherwise.
// 	 * 
// 	 * @return the default task and null otherwise.
// 	 */
// 	ITask getDefaultTask();
// 
// 	/**
// 	 * Returns the resource file.
// 	 * 
// 	 * @return the resource file.
// 	 */
// 	IFile getBuildFileResource();
// 
// 	/**
// 	 * Returns the build file name.
// 	 * 
// 	 * @return the build file name.
// 	 */
// 	String getBuildFileName();
// 
// 	/**
// 	 * Parse JavaScript build file if needed to load tasks.
// 	 * 
// 	 * @throws CoreException
// 	 */
// 	void parseBuildFile() throws CoreException;
// 
// 	/**
// 	 * Force the parse of the JavaScript build file to load tasks.
// 	 * 
// 	 * @param force
// 	 * @throws CoreException
// 	 */
// 	void parseBuildFile(boolean force) throws CoreException;
// 
// 	/**
// 	 * Dispose the build file.
// 	 */
// 	void dispose();
// 
// }
// 
// Path: core/fr.opensagres.eclipse.jsbuild.core/src/fr/opensagres/eclipse/jsbuild/core/Location.java
// public class Location {
// 
// 	private final int start;
// 	private final int length;
// 
// 	public Location(int start, int length) {
// 		this.start = start;
// 		this.length = length;
// 	}
// 
// 	public int getStart() {
// 		return start;
// 	}
// 
// 	public int getLength() {
// 		return length;
// 	}
// 
// }
// 
// Path: core/fr.opensagres.eclipse.jsbuild.core/src/fr/opensagres/eclipse/jsbuild/core/SimpleTask.java
// public class SimpleTask extends AbstractTask {
// 
// 	public SimpleTask(String name, IJSBuildFileNode parent) {
// 		super(name, parent);
// 	}
// 
// 	@Override
// 	public Collection<ITask> getChildNodes() {
// 		return Collections.emptyList();
// 	}
// 
// 	@Override
// 	public boolean isDefault() {
// 		return false;
// 	}
// }
// 
// Path: gulp/fr.opensagres.eclipse.jsbuild.gulp.core/src/fr/opensagres/eclipse/jsbuild/gulp/core/IGulpTask.java
// public interface IGulpTask extends ITask {
// 
// }


import tern.eclipse.ide.gulp.internal.query.TernGulpTaskQuery;
import fr.opensagres.eclipse.jsbuild.core.IJSBuildFile;
import fr.opensagres.eclipse.jsbuild.core.Location;
import fr.opensagres.eclipse.jsbuild.core.SimpleTask;
import fr.opensagres.eclipse.jsbuild.gulp.core.IGulpTask;

/**
 *  Copyright (c) 2013-2014 Angelo ZERR.
 *  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:
 *  Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
 */
package tern.eclipse.ide.gulp.internal;


public class GulpTask extends SimpleTask implements IGulpTask {

	public GulpTask(String name, IJSBuildFile buildFile) {
		super(name, buildFile);
	}

	@Override
	public Location getLocation(String text) {

// Path: gulp/tern.eclipse.ide.gulp/src/tern/eclipse/ide/gulp/internal/query/TernGulpTaskQuery.java
// public class TernGulpTaskQuery extends TernQuery {
// 
// 	public TernGulpTaskQuery(String name) {
// 		super("gulp-task");
// 		super.add("name", name);
// 	}
// 
// 	public static Location getLocation(ITask task, String text) {
// 		IFile gulpFile = task.getBuildFile().getBuildFileResource();
// 		String taskName = task.getName();
// 		return getLocation(gulpFile, taskName, text);
// 	}
// 
// 	public static Location getLocation(IFile gulpFile, String taskName,
// 			String text) {
// 		try {
// 			IIDETernProject ternProject = TernCorePlugin
// 					.getTernProject(gulpFile.getProject());
// 			TernGulpTaskQuery query = new TernGulpTaskQuery(taskName);
// 			ITernFile ternFile = text != null ? new TernTextFile(gulpFile, text)
// 					: ternProject.getFile(gulpFile);
// 			query.setFile(ternFile.getFileName());
// 			LocationCollector collector = new LocationCollector();
// 			ternProject.request(query, ternFile, collector);
// 			return collector.getLocation();
// 		} catch (Exception e) {
// 			Logger.logException(e);
// 		}
// 		return null;
// 	}
// 
// 	private static class LocationCollector implements ITernDefinitionCollector {
// 
// 		private Location location;
// 
// 		@Override
// 		public void setDefinition(String filename, Long start, Long end) {
// 			if (start != null) {
// 				int s = start.intValue();
// 				int length = end != null ? end.intValue() - s : 0;
// 				location = new Location(s, length);
// 			}
// 		}
// 
// 		public Location getLocation() {
// 			return location;
// 		}
// 	}
// 
// }
// 
// Path: core/fr.opensagres.eclipse.jsbuild.core/src/fr/opensagres/eclipse/jsbuild/core/IJSBuildFile.java
// public interface IJSBuildFile extends IJSBuildFileNode {
// 
// 	/**
// 	 * Returns the default task and null otherwise.
// 	 * 
// 	 * @return the default task and null otherwise.
// 	 */
// 	ITask getDefaultTask();
// 
// 	/**
// 	 * Returns the resource file.
// 	 * 
// 	 * @return the resource file.
// 	 */
// 	IFile getBuildFileResource();
// 
// 	/**
// 	 * Returns the build file name.
// 	 * 
// 	 * @return the build file name.
// 	 */
// 	String getBuildFileName();
// 
// 	/**
// 	 * Parse JavaScript build file if needed to load tasks.
// 	 * 
// 	 * @throws CoreException
// 	 */
// 	void parseBuildFile() throws CoreException;
// 
// 	/**
// 	 * Force the parse of the JavaScript build file to load tasks.
// 	 * 
// 	 * @param force
// 	 * @throws CoreException
// 	 */
// 	void parseBuildFile(boolean force) throws CoreException;
// 
// 	/**
// 	 * Dispose the build file.
// 	 */
// 	void dispose();
// 
// }
// 
// Path: core/fr.opensagres.eclipse.jsbuild.core/src/fr/opensagres/eclipse/jsbuild/core/Location.java
// public class Location {
// 
// 	private final int start;
// 	private final int length;
// 
// 	public Location(int start, int length) {
// 		this.start = start;
// 		this.length = length;
// 	}
// 
// 	public int getStart() {
// 		return start;
// 	}
// 
// 	public int getLength() {
// 		return length;
// 	}
// 
// }
// 
// Path: core/fr.opensagres.eclipse.jsbuild.core/src/fr/opensagres/eclipse/jsbuild/core/SimpleTask.java
// public class SimpleTask extends AbstractTask {
// 
// 	public SimpleTask(String name, IJSBuildFileNode parent) {
// 		super(name, parent);
// 	}
// 
// 	@Override
// 	public Collection<ITask> getChildNodes() {
// 		return Collections.emptyList();
// 	}
// 
// 	@Override
// 	public boolean isDefault() {
// 		return false;
// 	}
// }
// 
// Path: gulp/fr.opensagres.eclipse.jsbuild.gulp.core/src/fr/opensagres/eclipse/jsbuild/gulp/core/IGulpTask.java
// public interface IGulpTask extends ITask {
// 
// }


// Path: gulp/tern.eclipse.ide.gulp/src/tern/eclipse/ide/gulp/internal/GulpTask.java
import tern.eclipse.ide.gulp.internal.query.TernGulpTaskQuery;
import fr.opensagres.eclipse.jsbuild.core.IJSBuildFile;
import fr.opensagres.eclipse.jsbuild.core.Location;
import fr.opensagres.eclipse.jsbuild.core.SimpleTask;
import fr.opensagres.eclipse.jsbuild.gulp.core.IGulpTask;

/**
 *  Copyright (c) 2013-2014 Angelo ZERR.
 *  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:
 *  Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
 */
package tern.eclipse.ide.gulp.internal;


public class GulpTask extends SimpleTask implements IGulpTask {

	public GulpTask(String name, IJSBuildFile buildFile) {
		super(name, buildFile);
	}

	@Override
	public Location getLocation(String text) {

		return TernGulpTaskQuery.getLocation(this, text);
