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"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[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
|
// Libraries
|
||||||
|
mod manager;
|
||||||
|
mod data;
|
||||||
mod card;
|
mod card;
|
||||||
mod board;
|
mod board;
|
||||||
|
|
||||||
|
@ -6,17 +8,18 @@ mod board;
|
||||||
|
|
||||||
// Entry Point
|
// Entry Point
|
||||||
fn main() {
|
fn main() {
|
||||||
// Create a few new boards
|
// Loading it from a manager
|
||||||
let mut boards: Vec<board::TaskBoard> = Vec::new();
|
let mut managed: manager::Manager = manager::Manager::init();
|
||||||
|
managed.parse(String::from("build/data/user.json"));
|
||||||
|
|
||||||
// Add a board
|
// Printing out the boards
|
||||||
boards.push(board::TaskBoard::init(String::from("New Board")));
|
println!("-- PROJECT --");
|
||||||
|
println!("You have {} boards.", managed.boards.len());
|
||||||
|
|
||||||
// Printing first board
|
for board in managed.boards {
|
||||||
for i in boards {
|
println!("-- {} --", board.name);
|
||||||
println!("Board: {}", i.name);
|
for card in board.cards {
|
||||||
for x in i.cards {
|
println!("\t- {} ({})", card.name, card.desc);
|
||||||
println!("\tCard: {}", x.name);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
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