lla 0.2.9

A lightweight ls replacement
use super::FileFormatter;
use crate::error::Result;
use crate::plugin::PluginManager;
use crate::utils::color::colorize_file_name;
use lla_plugin_interface::DecoratedEntry;

pub struct DefaultFormatter;

impl FileFormatter for DefaultFormatter {
    fn format_files(
        &self,
        files: &[DecoratedEntry],
        plugin_manager: &PluginManager,
        _depth: Option<usize>,
    ) -> Result<String> {
        Ok(files
            .iter()
            .map(|file| {
                let colored_name = colorize_file_name(&file.path).to_string();
                let plugin_fields = plugin_manager.format_fields(file, "default").join(" ");
                if plugin_fields.is_empty() {
                    colored_name
                } else {
                    format!("{} {}", colored_name, plugin_fields)
                }
            })
            .collect::<Vec<_>>()
            .join("\n"))
    }
}