diff options
author | Nadrieril | 2019-03-22 18:12:13 +0100 |
---|---|---|
committer | Nadrieril | 2019-03-22 18:12:13 +0100 |
commit | 8110651ccf498bcf3f0cd55f3b1730d9972cf254 (patch) | |
tree | 2e0b08153582b23bce178f4ca3b945b01ddd6306 /dhall_core/src/printer.rs | |
parent | 9a8a14ba3863b3bc5e79cd8070d6779451ff8466 (diff) |
Handle quoted labels
Diffstat (limited to 'dhall_core/src/printer.rs')
-rw-r--r-- | dhall_core/src/printer.rs | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/dhall_core/src/printer.rs b/dhall_core/src/printer.rs index 7b108d5..508c1c8 100644 --- a/dhall_core/src/printer.rs +++ b/dhall_core/src/printer.rs @@ -285,6 +285,21 @@ impl Display for Const { } } +impl Display for Label { + fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { + let s = String::from(self.clone()); + let is_keyword = |s| match s { + "let" | "in" | "if" | "then" | "else" => true, + _ => false, + }; + if s.chars().all(|c| c.is_ascii_alphanumeric()) && !is_keyword(&s) { + write!(f, "{}", s) + } else { + write!(f, "`{}`", s) + } + } +} + impl Display for Import { fn fmt(&self, f: &mut fmt::Formatter) -> Result<(), fmt::Error> { use std::path::PathBuf; |