diff options
Diffstat (limited to 'zellij-utils/src/plugin_api/file.rs')
-rw-r--r-- | zellij-utils/src/plugin_api/file.rs | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/zellij-utils/src/plugin_api/file.rs b/zellij-utils/src/plugin_api/file.rs new file mode 100644 index 000000000..7c06aa8e0 --- /dev/null +++ b/zellij-utils/src/plugin_api/file.rs @@ -0,0 +1,30 @@ +pub use super::generated_api::api::file::File as ProtobufFile; +use crate::data::FileToOpen; + +use std::convert::TryFrom; +use std::path::PathBuf; + +impl TryFrom<ProtobufFile> for FileToOpen { + type Error = &'static str; + fn try_from(protobuf_file: ProtobufFile) -> Result<Self, &'static str> { + let path = PathBuf::from(protobuf_file.path); + let line_number = protobuf_file.line_number.map(|l| l as usize); + let cwd = protobuf_file.cwd.map(|c| PathBuf::from(c)); + Ok(FileToOpen { + path, + line_number, + cwd, + }) + } +} + +impl TryFrom<FileToOpen> for ProtobufFile { + type Error = &'static str; + fn try_from(file_to_open: FileToOpen) -> Result<Self, &'static str> { + Ok(ProtobufFile { + path: file_to_open.path.display().to_string(), + line_number: file_to_open.line_number.map(|l| l as i32), + cwd: file_to_open.cwd.map(|c| c.display().to_string()), + }) + } +} |