use serde::{Deserialize, Serialize};
use crate::r_io_utils;
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct LsdData {
pub resources: Vec<Resources>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Resources {
pub name: String,
pub permissions: String,
pub owner: String,
pub group: String,
pub date: String,
pub size: f32,
pub unit: String,
}
pub fn parse(data: Option<String>) -> LsdData {
let mut buffer = String::new();
r_io_utils::determine_data_source(data, &mut buffer);
let mut resources = vec![];
for sl in buffer.lines() {
let mut line_parts = sl.split_whitespace();
let mut r = Resources {
name: String::new(),
permissions: String::new(),
owner: String::new(),
group: String::new(),
date: String::new(),
size: 0.0,
unit: String::new(),
};
r.permissions = String::from(line_parts.next().unwrap());
r.owner = String::from(line_parts.next().unwrap());
r.group = String::from(line_parts.next().unwrap());
r.size = line_parts.next().unwrap().parse::<f32>().unwrap();
r.unit = String::from(line_parts.next().unwrap());
r.date = String::from(line_parts.next().unwrap());
r.date.push_str(" ");
r.date.push_str(line_parts.next().unwrap());
r.date.push_str(" ");
r.date.push_str(line_parts.next().unwrap());
r.date.push_str(" ");
r.date.push_str(line_parts.next().unwrap());
r.date.push_str(" ");
r.date.push_str(line_parts.next().unwrap());
r.name = String::from(line_parts.next().unwrap());
resources.push(r);
}
LsdData {
resources: resources,
}
}