// Path: engine/src/main/java/com/impossibl/stencil/api/TemplateSource.java
// public interface TemplateSource extends Closeable {
//   
//   /**
//    * Get the absolute URI of template source.
//    * 
//    * @return Absolute URI of template source
//    * @throws IOException
//    */
//   public URI getURI() throws IOException;
//   
//   /**
//    * Opens a reader for the template source text.
//    * 
//    * @return Reader for the template source text
//    * @throws IOException
//    */
//   public Reader openReader() throws IOException;
//   
//   /**
//    * Get a unique tag for the template source. Generally a hash (MD5, SHA1,
//    * etc) of the source text.
//    * 
//    * @return Unique tag for the source text
//    * @throws IOException
//    */
//   public String getTag() throws IOException;
//   
// }
// 
// Path: engine/src/main/java/com/impossibl/stencil/api/TemplateSourceLoader.java
// public interface TemplateSourceLoader {
//   
//   /**
//    * Find and load template source for the given path.
//    * 
//    * @param path Path to retrieve template source for
//    * @return Template source information
//    * @throws IOException
//    */
//   TemplateSource find(String path) throws IOException;
// 
// }


import java.io.IOException;
import java.net.URL;
import com.impossibl.stencil.api.TemplateSource;
import com.impossibl.stencil.api.TemplateSourceLoader;
package com.impossibl.stencil.api.impl;



/**
 * URL template source loader that simply maps the path to a file URL.
 * 
 * @author kdubb
 *
 */
public class URLTemplateSourceLoader implements TemplateSourceLoader {

  /**
   * Maps the given path to a file URL and builds a URLTemplateSource for
   * it.
   * @return URLTemplateSource for the path
   * @see URLTemplateSource
   */
  @Override
// Path: engine/src/main/java/com/impossibl/stencil/api/TemplateSource.java
// public interface TemplateSource extends Closeable {
//   
//   /**
//    * Get the absolute URI of template source.
//    * 
//    * @return Absolute URI of template source
//    * @throws IOException
//    */
//   public URI getURI() throws IOException;
//   
//   /**
//    * Opens a reader for the template source text.
//    * 
//    * @return Reader for the template source text
//    * @throws IOException
//    */
//   public Reader openReader() throws IOException;
//   
//   /**
//    * Get a unique tag for the template source. Generally a hash (MD5, SHA1,
//    * etc) of the source text.
//    * 
//    * @return Unique tag for the source text
//    * @throws IOException
//    */
//   public String getTag() throws IOException;
//   
// }
// 
// Path: engine/src/main/java/com/impossibl/stencil/api/TemplateSourceLoader.java
// public interface TemplateSourceLoader {
//   
//   /**
//    * Find and load template source for the given path.
//    * 
//    * @param path Path to retrieve template source for
//    * @return Template source information
//    * @throws IOException
//    */
//   TemplateSource find(String path) throws IOException;
// 
// }


// Path: engine/src/main/java/com/impossibl/stencil/api/impl/URLTemplateSourceLoader.java
import java.io.IOException;
import java.net.URL;
import com.impossibl.stencil.api.TemplateSource;
import com.impossibl.stencil.api.TemplateSourceLoader;

package com.impossibl.stencil.api.impl;



/**
 * URL template source loader that simply maps the path to a file URL.
 * 
 * @author kdubb
 *
 */
public class URLTemplateSourceLoader implements TemplateSourceLoader {

  /**
   * Maps the given path to a file URL and builds a URLTemplateSource for
   * it.
   * @return URLTemplateSource for the path
   * @see URLTemplateSource
   */
  @Override
  public TemplateSource find(String path) throws IOException {