From 881248d2c4f0b4556a23d671d355bb7258adf8bb Mon Sep 17 00:00:00 2001 From: Nadrieril Date: Tue, 17 Dec 2019 14:33:06 +0000 Subject: Rename syntax::core to syntax::ast --- dhall/src/syntax/core/import.rs | 130 ---------------------------------------- 1 file changed, 130 deletions(-) delete mode 100644 dhall/src/syntax/core/import.rs (limited to 'dhall/src/syntax/core/import.rs') diff --git a/dhall/src/syntax/core/import.rs b/dhall/src/syntax/core/import.rs deleted file mode 100644 index da3e99b..0000000 --- a/dhall/src/syntax/core/import.rs +++ /dev/null @@ -1,130 +0,0 @@ -/// The beginning of a file path which anchors subsequent path components -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] -pub enum FilePrefix { - /// Absolute path - Absolute, - /// Path relative to . - Here, - /// Path relative to .. - Parent, - /// Path relative to ~ - Home, -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct FilePath { - pub file_path: Vec, -} - -/// The location of import (i.e. local vs. remote vs. environment) -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum ImportLocation { - Local(FilePrefix, FilePath), - Remote(URL), - Env(String), - Missing, -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct URL { - pub scheme: Scheme, - pub authority: String, - pub path: FilePath, - pub query: Option, - pub headers: Option, -} - -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] -pub enum Scheme { - HTTP, - HTTPS, -} - -/// How to interpret the import's contents (i.e. as Dhall code or raw text) -#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] -pub enum ImportMode { - Code, - RawText, - Location, -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub enum Hash { - SHA256(Vec), -} - -/// Reference to an external resource -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct Import { - pub mode: ImportMode, - pub location: ImportLocation, - pub hash: Option, -} - -impl URL { - pub fn traverse_ref<'a, Err, SE2>( - &'a self, - f: impl FnOnce(&'a SE) -> Result, - ) -> Result, Err> { - let headers = self.headers.as_ref().map(f).transpose()?; - Ok(URL { - scheme: self.scheme, - authority: self.authority.clone(), - path: self.path.clone(), - query: self.query.clone(), - headers, - }) - } - pub fn traverse_mut<'a, Err>( - &'a mut self, - f: impl FnOnce(&'a mut SE) -> Result<(), Err>, - ) -> Result<(), Err> { - if let Some(header) = &mut self.headers { - f(header)?; - } - Ok(()) - } -} - -impl ImportLocation { - pub fn traverse_ref<'a, Err, SE2>( - &'a self, - f: impl FnOnce(&'a SE) -> Result, - ) -> Result, Err> { - use ImportLocation::*; - Ok(match self { - Local(prefix, path) => Local(*prefix, path.clone()), - Remote(url) => Remote(url.traverse_ref(f)?), - Env(env) => Env(env.clone()), - Missing => Missing, - }) - } - pub fn traverse_mut<'a, Err>( - &'a mut self, - f: impl FnOnce(&'a mut SE) -> Result<(), Err>, - ) -> Result<(), Err> { - if let ImportLocation::Remote(url) = self { - url.traverse_mut(f)?; - } - Ok(()) - } -} - -impl Import { - pub fn traverse_ref<'a, Err, SE2>( - &'a self, - f: impl FnOnce(&'a SE) -> Result, - ) -> Result, Err> { - Ok(Import { - mode: self.mode, - location: self.location.traverse_ref(f)?, - hash: self.hash.clone(), - }) - } - pub fn traverse_mut<'a, Err>( - &'a mut self, - f: impl FnOnce(&'a mut SE) -> Result<(), Err>, - ) -> Result<(), Err> { - self.location.traverse_mut(f) - } -} -- cgit v1.2.3