mirror of
https://github.com/Dummi26/mers.git
synced 2025-03-10 14:13:52 +01:00
tutor
This commit is contained in:
parent
ca1dbf2722
commit
d66a0f37f2
@ -21,7 +21,7 @@ pub fn run(tutor: &mut Tutor) {
|
||||
// thread: Represents a different thread. The thread's return value can be retrieved by using .await(). Thread values are returned by the builtin thread() function.
|
||||
// reference: A mutable reference to some data. Used by things like push() and remove() to avoid having to clone the entire list just to make a small change.
|
||||
// enums: An enum can wrap any type. Enums are identified by their names and can be created using EnumName: inner_value. The type is written EnumName(InnerType).
|
||||
// return a value of type GoBackToMenu([int]) to return to the menu.
|
||||
// return any enum to return to the menu.
|
||||
"));
|
||||
loop {
|
||||
match tutor.let_user_make_change().run(vec![]).data {
|
||||
|
@ -2,7 +2,7 @@ use crate::script::val_data::VDataEnum;
|
||||
|
||||
use super::Tutor;
|
||||
|
||||
pub const MAX_POS: usize = 3;
|
||||
pub const MAX_POS: usize = 6;
|
||||
|
||||
pub fn run(mut tutor: Tutor) {
|
||||
loop {
|
||||
@ -11,26 +11,37 @@ pub fn run(mut tutor: Tutor) {
|
||||
"
|
||||
// Welcome to the mers tutor!
|
||||
// This is the main menu. Change the number to navigate to a specific part.
|
||||
0
|
||||
fn go_to() 0
|
||||
// 1 Comments
|
||||
// 2 Values
|
||||
// 3 Returns
|
||||
// 2 Functions
|
||||
// 3 Values
|
||||
// 4 Variables
|
||||
// 5 Returns
|
||||
// 6 Types
|
||||
|
||||
go_to()
|
||||
",
|
||||
));
|
||||
loop {
|
||||
match tutor.let_user_make_change().run(vec![]).data {
|
||||
VDataEnum::Int(pos) => {
|
||||
VDataEnum::Int(pos) if pos != 0 => {
|
||||
tutor.current_pos = (pos.max(0) as usize).min(MAX_POS);
|
||||
match tutor.current_pos {
|
||||
0 => continue,
|
||||
1 => super::base_comments::run(&mut tutor),
|
||||
2 => super::base_values::run(&mut tutor),
|
||||
3 => super::base_return::run(&mut tutor),
|
||||
2 => super::base_functions::run(&mut tutor),
|
||||
3 => super::base_values::run(&mut tutor),
|
||||
4 => super::base_variables::run(&mut tutor),
|
||||
5 => super::base_return::run(&mut tutor),
|
||||
6 => super::base_types::run(&mut tutor),
|
||||
_ => unreachable!(),
|
||||
}
|
||||
}
|
||||
other => {
|
||||
tutor.set_status(format!(" - Returned {} instead of an integer", other));
|
||||
tutor.set_status(format!(
|
||||
" - Returned {} instead of a nonzero integer",
|
||||
other
|
||||
));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -6,8 +6,11 @@ use crate::{
|
||||
};
|
||||
|
||||
mod base_comments;
|
||||
mod base_functions;
|
||||
mod base_return;
|
||||
mod base_types;
|
||||
mod base_values;
|
||||
mod base_variables;
|
||||
mod menu;
|
||||
|
||||
pub fn start(spawn_new_terminal_for_editor: bool) {
|
||||
@ -36,6 +39,7 @@ false
|
||||
editor_join_handle,
|
||||
file_path,
|
||||
receiver,
|
||||
i_name: None,
|
||||
};
|
||||
loop {
|
||||
if let VDataEnum::Bool(true) = tutor.let_user_make_change().run(vec![]).data {
|
||||
@ -54,11 +58,13 @@ pub struct Tutor {
|
||||
editor_join_handle: JoinHandle<()>,
|
||||
file_path: PathBuf,
|
||||
receiver: std::sync::mpsc::Receiver<Result<RScript, ScriptError>>,
|
||||
// i_ are inputs from the user
|
||||
pub i_name: Option<String>,
|
||||
}
|
||||
impl Tutor {
|
||||
/// only returns after a successful compile. before returning, does not call self.update() - you have to do that manually.
|
||||
pub fn let_user_make_change(&mut self) -> RScript {
|
||||
// eprintln!(" - - - - - - - - - - - - - - - - - - - - - - - - -");
|
||||
eprintln!(" - - - - - - - - - - - - - - - - - - - - - - - - -");
|
||||
let script = loop {
|
||||
match self.receiver.recv().unwrap() {
|
||||
Err(e) => {
|
||||
|
Loading…
Reference in New Issue
Block a user