diff --git a/src/main.rs b/src/main.rs index e28e6406e..44810330d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -28,6 +28,7 @@ use std::path::{Component, PathBuf}; use std::process::exit; use nu_ansi_term::{AnsiStrings as ANSIStrings, Style}; +use output::OutputType; use crate::fs::feature::git::GitCache; use crate::fs::filter::GitIgnore; diff --git a/src/output/cell.rs b/src/output/cell.rs index 3aa4eb88f..46fe7e3f7 100644 --- a/src/output/cell.rs +++ b/src/output/cell.rs @@ -110,8 +110,8 @@ impl TextCell { let new_contents = self .contents .iter() + .filter(|w| !w.as_str().is_empty() && !w.as_str().trim().is_empty()) .cloned() - .filter(|w| !w.is_empty() && !w.trim().is_empty()) .collect::>(); TextCell { diff --git a/src/output/details.rs b/src/output/details.rs index f762147ff..78958cc50 100644 --- a/src/output/details.rs +++ b/src/output/details.rs @@ -267,14 +267,14 @@ impl<'a> Render<'a> { None, ); - write!(w, "{{\"files\":[")?; + write!(w, "\"files\":[")?; for (i, row) in self.iterate(rows).enumerate() { write!(w, "\"{}\"", row.strings())?; if (i + 1) < self.files.len() { write!(w, ", ")?; } } - writeln!(w, "]}}") + writeln!(w, "]") } } diff --git a/src/output/grid.rs b/src/output/grid.rs index f09ae3c94..86d08fb91 100644 --- a/src/output/grid.rs +++ b/src/output/grid.rs @@ -63,7 +63,7 @@ impl<'a> Render<'a> { // and treat it as just printing *quite* the same as lines pub fn render_json(mut self, w: &mut W) -> io::Result<()> { self.filter.sort_files(&mut self.files); - writeln!(w, "{{\"files\":[")?; + write!(w, "\"files\":[")?; for (i, file) in self.files.iter().enumerate() { let name_cell = self.file_style.for_file(file, self.theme).paint(); write!(w, "\"{}\"", name_cell.strings())?; @@ -71,7 +71,7 @@ impl<'a> Render<'a> { write!(w, ",")?; } } - writeln!(w, "]}}")?; + writeln!(w, "]")?; Ok(()) } } diff --git a/src/output/grid_details.rs b/src/output/grid_details.rs index e07266631..7a3e1c774 100644 --- a/src/output/grid_details.rs +++ b/src/output/grid_details.rs @@ -109,7 +109,7 @@ impl<'a> Render<'a> { // because grid-details has no tree view. pub fn render_json(self, _w: &mut W) -> io::Result<()> { - todo!("Implement json rendering"); + unimplemented!("As it is made to be piped json with grid view, will not be implemented"); } pub fn render(mut self, w: &mut W) -> io::Result<()> { diff --git a/src/output/json.rs b/src/output/json.rs index c02eef910..3caa8f3b4 100644 --- a/src/output/json.rs +++ b/src/output/json.rs @@ -4,7 +4,7 @@ This file is a special renderer for json use std::io::{self, Write}; -use super::{details::TableIter, TextCell}; +use super::{cell::TextCell, details::TableIter}; #[derive(Debug, Clone)] struct JsonFile { @@ -35,7 +35,7 @@ impl JsonFile { writeln!(w, "[")?; } for (i, cell) in self.cell.contents.iter().enumerate() { - if cell.is_empty() || cell.trim().is_empty() { + if cell.as_str().is_empty() || cell.as_str().trim().is_empty() { continue; }; if let Some(ref header) = header { diff --git a/src/output/lines.rs b/src/output/lines.rs index 02b583bd4..908d65153 100644 --- a/src/output/lines.rs +++ b/src/output/lines.rs @@ -37,7 +37,7 @@ impl<'a> Render<'a> { pub fn render_json(mut self, w: &mut W) -> io::Result<()> { self.filter.sort_files(&mut self.files); - write!(w, "{{\"files\":[")?; + write!(w, "\"files\":[")?; for (i, file) in self.files.iter().enumerate() { let name_cell = self.render_file(file); write!(w, "\"{}\"", ANSIStrings(&name_cell))?; @@ -45,7 +45,7 @@ impl<'a> Render<'a> { write!(w, ",")?; } } - writeln!(w, "]}}")?; + writeln!(w, "]")?; Ok(()) }