Skip to content

Commit 69a73f2

Browse files
committed
feat: input
there may be a better way of doing this
1 parent eda45b3 commit 69a73f2

4 files changed

Lines changed: 37 additions & 2 deletions

File tree

src/block.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
use std::collections::HashMap;
2+
3+
use crate::Input;
14
use serde::Deserialize;
25

36
#[derive(Debug, Deserialize)]
@@ -6,7 +9,7 @@ pub struct Block {
69
pub opcode: String,
710
pub next: Option<String>,
811
pub parent: Option<String>,
9-
// pub inputs: ...,
12+
pub inputs: HashMap<String, Input>,
1013
// pub fields: ...,
1114
pub shadow: bool,
1215
#[serde(rename = "topLevel")]

src/input.rs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
use serde::Deserialize;
2+
use serde_json;
3+
use serde_tuple::*;
4+
5+
#[derive(Debug, Deserialize)]
6+
#[serde(untagged)]
7+
pub enum InputValue {
8+
Id(String),
9+
Prim(serde_json::Value),
10+
}
11+
#[derive(Debug, Deserialize_tuple)]
12+
pub struct ObscuredInput {
13+
pub shadow: u8,
14+
pub value: InputValue,
15+
pub obscurer: InputValue,
16+
}
17+
#[derive(Debug, Deserialize_tuple)]
18+
pub struct SimpleInput {
19+
pub shadow: u8,
20+
pub value: InputValue,
21+
}
22+
#[derive(Debug, Deserialize)]
23+
#[serde(untagged)]
24+
pub enum Input {
25+
Simple(SimpleInput),
26+
Obscured(ObscuredInput),
27+
}

src/lib.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ pub mod comment;
44
pub mod costume;
55
pub mod error;
66
pub mod extension;
7+
pub mod input;
78
pub mod list;
89
pub mod meta;
910
pub mod monitor;
@@ -17,6 +18,7 @@ pub use broadcast::Broadcast;
1718
pub use comment::Comment;
1819
pub use costume::Costume;
1920
pub use extension::Extension;
21+
pub use input::Input;
2022
pub use list::List;
2123
pub use meta::Meta;
2224
pub use monitor::Monitor;

src/project.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,10 @@ impl Project {
5454
};
5555
project.title = title;
5656
let sprite = project.get_sprite_by_name("Part 1").unwrap();
57-
println!("{:#?}", sprite.comments);
57+
println!(
58+
"{:#?}",
59+
sprite.blocks.values().skip(15).take(15).collect::<Vec<_>>()
60+
);
5861
Ok(project)
5962
}
6063
pub fn get_sprite_by_name(&mut self, name: &str) -> Option<&mut Sprite> {

0 commit comments

Comments
 (0)