Added project loading
This commit is contained in:
parent
eab2096e39
commit
09bfa645ad
4 changed files with 73 additions and 9 deletions
|
@ -4,3 +4,4 @@ version = "0.1.0"
|
|||
edition = "2021"
|
||||
|
||||
[dependencies]
|
||||
serde_json = "1.0"
|
||||
|
|
19
src/data.rs
Normal file
19
src/data.rs
Normal file
|
@ -0,0 +1,19 @@
|
|||
// Libraries
|
||||
use std::fs;
|
||||
use serde_json::*;
|
||||
|
||||
// Structures
|
||||
pub struct Data {
|
||||
pub content: String
|
||||
}
|
||||
|
||||
// Implementations
|
||||
impl Data {
|
||||
pub fn init(path: String) -> Data{
|
||||
// Loading the data from path
|
||||
let content: String = fs::read_to_string(path).expect("Failed to read file");
|
||||
|
||||
// Returning the result
|
||||
return Data {content: content};
|
||||
}
|
||||
}
|
21
src/main.rs
21
src/main.rs
|
@ -1,4 +1,6 @@
|
|||
// Libraries
|
||||
mod manager;
|
||||
mod data;
|
||||
mod card;
|
||||
mod board;
|
||||
|
||||
|
@ -6,17 +8,18 @@ mod board;
|
|||
|
||||
// Entry Point
|
||||
fn main() {
|
||||
// Create a few new boards
|
||||
let mut boards: Vec<board::TaskBoard> = Vec::new();
|
||||
// Loading it from a manager
|
||||
let mut managed: manager::Manager = manager::Manager::init();
|
||||
managed.parse(String::from("build/data/user.json"));
|
||||
|
||||
// Add a board
|
||||
boards.push(board::TaskBoard::init(String::from("New Board")));
|
||||
// Printing out the boards
|
||||
println!("-- PROJECT --");
|
||||
println!("You have {} boards.", managed.boards.len());
|
||||
|
||||
// Printing first board
|
||||
for i in boards {
|
||||
println!("Board: {}", i.name);
|
||||
for x in i.cards {
|
||||
println!("\tCard: {}", x.name);
|
||||
for board in managed.boards {
|
||||
println!("-- {} --", board.name);
|
||||
for card in board.cards {
|
||||
println!("\t- {} ({})", card.name, card.desc);
|
||||
}
|
||||
}
|
||||
}
|
41
src/manager.rs
Normal file
41
src/manager.rs
Normal file
|
@ -0,0 +1,41 @@
|
|||
// Libraries
|
||||
use serde_json::{self, Value};
|
||||
use crate::board;
|
||||
use crate::card;
|
||||
use crate::data;
|
||||
|
||||
// Structures
|
||||
pub struct Manager{
|
||||
pub boards: Vec<board::TaskBoard>
|
||||
}
|
||||
|
||||
// Implementations
|
||||
impl Manager{
|
||||
pub fn init() -> Manager {
|
||||
return Manager {boards: vec![]};
|
||||
}
|
||||
pub fn parse(&mut self, path: String){
|
||||
// Loading a data object from the path
|
||||
let loaded: data::Data = data::Data::init(path);
|
||||
|
||||
// Parsing the JSON
|
||||
let parsed: Vec<Value> = serde_json::from_str(&loaded.content).expect("Failed to parse JSON");
|
||||
|
||||
// Going through all boards
|
||||
for item in parsed {
|
||||
// A list of cards
|
||||
let mut cards: Vec<card::TaskCard> = vec![];
|
||||
|
||||
// Init cards
|
||||
for task in item["cards"].as_array().unwrap() {
|
||||
let _name: String = String::from(task["name"].as_str().unwrap());
|
||||
let _desc: String = String::from(task["desc"].as_str().unwrap());
|
||||
|
||||
cards.push(card::TaskCard::init_val(_name, _desc));
|
||||
}
|
||||
|
||||
// Creating the boards inside the manager
|
||||
self.boards.push(board::TaskBoard {name: String::from(item["name"].as_str().expect("Failed to parse string")), cards: cards});
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue