diff options
| author | Andreu Botella Botella | 2019-11-06 03:09:22 +0100 |
|---|---|---|
| committer | Philipp A | 2019-11-07 09:27:38 +0100 |
| commit | df6b7645d845a022ca7eeba08b1ecb761a020195 (patch) | |
| tree | b6809aefdafcf9aec6e833e53a8d2304fea17362 /src/target.rs | |
| parent | 5387291c1a2d4cfd0e5acdad26dcc7e33329d39a (diff) | |
| download | rust-rst-df6b7645d845a022ca7eeba08b1ecb761a020195.tar.bz2 | |
Handling relative URLs in the conversion code.
Closes #10.
Diffstat (limited to 'src/target.rs')
| -rw-r--r-- | src/target.rs | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/src/target.rs b/src/target.rs deleted file mode 100644 index 3ce7d75..0000000 --- a/src/target.rs +++ /dev/null @@ -1,55 +0,0 @@ -use std::path::PathBuf; -use std::fmt; -use std::str::FromStr; -use std::string::ParseError; - -use url::{self,Url}; -use serde_derive::Serialize; - - -#[derive(Debug,PartialEq,Serialize,Clone)] -#[serde(untagged)] -pub enum Target { - #[serde(serialize_with = "serialize_url")] - Url(Url), - Path(PathBuf), -} - -impl From<Url> for Target { - fn from(url: Url) -> Self { - Target::Url(url) - } -} - -impl From<PathBuf> for Target { - fn from(path: PathBuf) -> Self { - Target::Path(path) - } -} - - -impl fmt::Display for Target { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - use Target::*; - match *self { - Url (ref url) => write!(f, "{}", url), - Path(ref path) => write!(f, "{}", path.display()), - } - } -} - - -impl FromStr for Target { - type Err = ParseError; - fn from_str(input: &str) -> Result<Self, Self::Err> { - Ok(match Url::parse(input) { - Ok(url) => url.into(), - Err(_) => PathBuf::from(input.trim()).into(), - }) - } -} - - -pub fn serialize_url<S>(url: &Url, serializer: S) -> Result<S::Ok, S::Error> where S: serde::ser::Serializer { - serializer.serialize_str(url.as_str()) -} |
