From 505e6a34cc5aadac1831d31ef64b94b61c2ace13 Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Sat, 9 Mar 2019 00:42:46 +0100 Subject: First import works ! --- dhall/src/lib.rs | 47 +---------------------------------------------- 1 file changed, 1 insertion(+), 46 deletions(-) (limited to 'dhall/src/lib.rs') diff --git a/dhall/src/lib.rs b/dhall/src/lib.rs index 95f7f6f..8add5b6 100644 --- a/dhall/src/lib.rs +++ b/dhall/src/lib.rs @@ -7,49 +7,4 @@ pub use crate::normalize::*; pub mod imports; pub mod typecheck; -use dhall_core::*; -use std::fmt; -use std::fs::File; -use std::io::Read; -use std::path::Path; - -#[derive(Debug)] -pub enum DhallError { - ParseError(parser::ParseError), - IOError(std::io::Error), -} -impl From for DhallError { - fn from(e: parser::ParseError) -> Self { - DhallError::ParseError(e) - } -} -impl From for DhallError { - fn from(e: std::io::Error) -> Self { - DhallError::IOError(e) - } -} -impl fmt::Display for DhallError { - fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { - use self::DhallError::*; - match self { - ParseError(e) => e.fmt(f), - IOError(e) => e.fmt(f), - } - } -} - -/// `source_pool` is a Vec of strings to be used to store the contents of imported files. -/// No ideal but necessary for lifetime reasons for now. -pub fn load_dhall_file<'i, 'a: 'i>( - f: &Path, - source_pool: &'a mut Vec, - _resolve_imports: bool, -) -> Result, DhallError> { - source_pool.push(String::new()); - let mut buffer = source_pool.last_mut().unwrap(); - File::open(f)?.read_to_string(&mut buffer)?; - let expr = parser::parse_expr(&*buffer)?; - let expr = expr.take_ownership_of_labels(); - let expr = imports::resolve_imports(&expr); - Ok(expr) -} +pub use crate::imports::{load_dhall_file, DhallError}; -- cgit v1.2.3