diff options
author | Kai Sickeler <k.sickeler@gmail.com> | 2016-08-01 17:13:49 +0200 |
---|---|---|
committer | Kai Sickeler <k.sickeler@gmail.com> | 2016-08-06 19:13:45 +0200 |
commit | 92c848dc816508a7296cb1513a4b01c6eed39672 (patch) | |
tree | 7a57a7525cc400add017bded98a14d9bc9ec6ffb /libimagentryview | |
parent | fc164a138231ffaa6c0a3f11ec0a6fad5ea7635d (diff) |
Added editor support
Diffstat (limited to 'libimagentryview')
-rw-r--r-- | libimagentryview/Cargo.toml | 4 | ||||
-rw-r--r-- | libimagentryview/src/builtin/editor.rs | 25 | ||||
-rw-r--r-- | libimagentryview/src/builtin/mod.rs | 1 | ||||
-rw-r--r-- | libimagentryview/src/lib.rs | 2 |
4 files changed, 32 insertions, 0 deletions
diff --git a/libimagentryview/Cargo.toml b/libimagentryview/Cargo.toml index 43c2830c..60d8d262 100644 --- a/libimagentryview/Cargo.toml +++ b/libimagentryview/Cargo.toml @@ -7,6 +7,10 @@ authors = ["Matthias Beyer <mail@beyermatthias.de>"] log = "0.3" toml = "0.1.25" glob = "0.2.11" +tempfile = "2.1.4" + +[dependencies.libimagrt] +path = "../libimagrt" [dependencies.libimagstore] path = "../libimagstore" diff --git a/libimagentryview/src/builtin/editor.rs b/libimagentryview/src/builtin/editor.rs new file mode 100644 index 00000000..0f35c98e --- /dev/null +++ b/libimagentryview/src/builtin/editor.rs @@ -0,0 +1,25 @@ +use libimagstore::store::Entry; +use libimagrt::runtime::Runtime; +use libimagrt::edit::edit_in_tmpfile; + +use viewer::Viewer; +use result::Result; +use error::ViewErrorKind as VEK; +use error::ViewError as VE; + +pub struct EditorView<'a>(&'a Runtime<'a>); + +impl<'a> EditorView<'a> { + pub fn new(rt: &'a Runtime) -> EditorView<'a> { + EditorView(rt) + } +} + +impl<'a> Viewer for EditorView<'a> { + fn view_entry(&self, e: &Entry) -> Result<()> { + let mut entry = e.to_str().clone().to_string(); + edit_in_tmpfile(self.0, &mut entry) + .map_err(|e| VE::new(VEK::ViewError, Some(Box::new(e)))) + } +} + diff --git a/libimagentryview/src/builtin/mod.rs b/libimagentryview/src/builtin/mod.rs index 449d9b67..ec41fd0f 100644 --- a/libimagentryview/src/builtin/mod.rs +++ b/libimagentryview/src/builtin/mod.rs @@ -1,3 +1,4 @@ +pub mod editor; pub mod plain; pub mod stdout; pub mod versions; diff --git a/libimagentryview/src/lib.rs b/libimagentryview/src/lib.rs index b31642f8..84992562 100644 --- a/libimagentryview/src/lib.rs +++ b/libimagentryview/src/lib.rs @@ -17,8 +17,10 @@ #[macro_use] extern crate log; extern crate glob; extern crate toml; +extern crate tempfile; extern crate libimagstore; +extern crate libimagrt; #[macro_use] extern crate libimagerror; pub mod error; |