summaryrefslogtreecommitdiffstats
path: root/libimagentryview
diff options
context:
space:
mode:
authorKai Sickeler <k.sickeler@gmail.com>2016-08-01 17:13:49 +0200
committerKai Sickeler <k.sickeler@gmail.com>2016-08-06 19:13:45 +0200
commit92c848dc816508a7296cb1513a4b01c6eed39672 (patch)
tree7a57a7525cc400add017bded98a14d9bc9ec6ffb /libimagentryview
parentfc164a138231ffaa6c0a3f11ec0a6fad5ea7635d (diff)
Added editor support
Diffstat (limited to 'libimagentryview')
-rw-r--r--libimagentryview/Cargo.toml4
-rw-r--r--libimagentryview/src/builtin/editor.rs25
-rw-r--r--libimagentryview/src/builtin/mod.rs1
-rw-r--r--libimagentryview/src/lib.rs2
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;