mirror of
				https://github.com/rm-dr/daisy
				synced 2025-11-04 02:43:21 -08:00 
			
		
		
		
	Compare commits
	
		
			13 Commits
		
	
	
		
			v1.1.3
			...
			a75f6197cd
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| a75f6197cd | |||
| 
						
						
							
						
						2f2c005c86
	
				 | 
					
					
						|||
| 
						
						
							
						
						ffebcf2e15
	
				 | 
					
					
						|||
| 4e1df2399b | |||
| 
						 | 
					5a921cfc7b | ||
| 
						
						
							
						
						2531524ffd
	
				 | 
					
					
						|||
| 
						
						
							
						
						e5525adcca
	
				 | 
					
					
						|||
| 
						
						
							
						
						a61cbf29e5
	
				 | 
					
					
						|||
| 39ab47530e | |||
| 
						
						
							
						
						be28669416
	
				 | 
					
					
						|||
| 
						
						
							
						
						7658ff76ef
	
				 | 
					
					
						|||
| 
						
						
							
						
						e9d392b80b
	
				 | 
					
					
						|||
| 63d4a01095 | 
							
								
								
									
										2
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										2
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@@ -28,7 +28,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[[package]]
 | 
					[[package]]
 | 
				
			||||||
name = "daisycalc"
 | 
					name = "daisycalc"
 | 
				
			||||||
version = "1.1.3"
 | 
					version = "1.1.5"
 | 
				
			||||||
dependencies = [
 | 
					dependencies = [
 | 
				
			||||||
 "cfg-if",
 | 
					 "cfg-if",
 | 
				
			||||||
 "num",
 | 
					 "num",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
[package]
 | 
					[package]
 | 
				
			||||||
name = "daisycalc"
 | 
					name = "daisycalc"
 | 
				
			||||||
version = "1.1.3"
 | 
					version = "1.1.5"
 | 
				
			||||||
edition = "2021"
 | 
					edition = "2021"
 | 
				
			||||||
build = "buildscript/main.rs"
 | 
					build = "buildscript/main.rs"
 | 
				
			||||||
license = "GPL-3.0-only"
 | 
					license = "GPL-3.0-only"
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										5
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								Makefile
									
									
									
									
									
								
							@@ -14,5 +14,6 @@ publish:
 | 
				
			|||||||
	cargo test
 | 
						cargo test
 | 
				
			||||||
	cargo publish
 | 
						cargo publish
 | 
				
			||||||
 | 
					
 | 
				
			||||||
docker:
 | 
					docker: wasm
 | 
				
			||||||
	docker build ./server -t git.betalupi.com/mark/daisy
 | 
						docker build ./server -t git.betalupi.com/mark/daisy --no-cache
 | 
				
			||||||
 | 
						docker push git.betalupi.com/mark/daisy
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										1
									
								
								TODO.md
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								TODO.md
									
									
									
									
									
								
							@@ -12,7 +12,6 @@
 | 
				
			|||||||
## Pre-release
 | 
					## Pre-release
 | 
				
			||||||
 - Tuple operations
 | 
					 - Tuple operations
 | 
				
			||||||
 - we don't need vectors as arguments to operators
 | 
					 - we don't need vectors as arguments to operators
 | 
				
			||||||
 - Fix linelocation when evaluating functions
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Parser
 | 
					## Parser
 | 
				
			||||||
 - Should functions be operators?
 | 
					 - Should functions be operators?
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -49,7 +49,7 @@ value = "1.602176634e-19 C"
 | 
				
			|||||||
enum_name = "ElectronMass"
 | 
					enum_name = "ElectronMass"
 | 
				
			||||||
pretty_name = "Electron mass"
 | 
					pretty_name = "Electron mass"
 | 
				
			||||||
strings = ["electronmass"]
 | 
					strings = ["electronmass"]
 | 
				
			||||||
value = "9.1093837015-31 kg"
 | 
					value = "9.1093837015e-31 kg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
[[constant]]
 | 
					[[constant]]
 | 
				
			||||||
enum_name = "ProtonMass"
 | 
					enum_name = "ProtonMass"
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -19,6 +19,7 @@ pub fn eval_operator(context: &mut Context, g: &Expression) -> Result<Option<Exp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
			if args.len() != 1 {panic!()};
 | 
								if args.len() != 1 {panic!()};
 | 
				
			||||||
			let a = &args[0];
 | 
								let a = &args[0];
 | 
				
			||||||
 | 
								let mut args_ll = op_loc.clone();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if sh_vars.len() == 1 {
 | 
								if sh_vars.len() == 1 {
 | 
				
			||||||
				if let Expression::Tuple(l, v) = a {
 | 
									if let Expression::Tuple(l, v) = a {
 | 
				
			||||||
@@ -28,6 +29,7 @@ pub fn eval_operator(context: &mut Context, g: &Expression) -> Result<Option<Exp
 | 
				
			|||||||
					))
 | 
										))
 | 
				
			||||||
				};
 | 
									};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									args_ll += a.get_linelocation();
 | 
				
			||||||
				context.add_shadow(sh_vars[0].clone(), Some(a.clone()));
 | 
									context.add_shadow(sh_vars[0].clone(), Some(a.clone()));
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				let Expression::Tuple(l, v) = a else {
 | 
									let Expression::Tuple(l, v) = a else {
 | 
				
			||||||
@@ -46,18 +48,28 @@ pub fn eval_operator(context: &mut Context, g: &Expression) -> Result<Option<Exp
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
				let mut i = 0;
 | 
									let mut i = 0;
 | 
				
			||||||
				while i < sh_vars.len() {
 | 
									while i < sh_vars.len() {
 | 
				
			||||||
 | 
										args_ll += v[i].get_linelocation();
 | 
				
			||||||
					context.add_shadow(sh_vars[i].clone(), Some(v[i].clone()));
 | 
										context.add_shadow(sh_vars[i].clone(), Some(v[i].clone()));
 | 
				
			||||||
					i += 1;
 | 
										i += 1;
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			let r = evaluate(context, &exp)?;
 | 
								let r = evaluate(context, &exp);
 | 
				
			||||||
			context.clear_shadow();
 | 
								context.clear_shadow();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								match r {
 | 
				
			||||||
 | 
									Ok(mut r) => {
 | 
				
			||||||
 | 
										r.set_linelocation(&args_ll);
 | 
				
			||||||
					return Ok(Some(r));
 | 
										return Ok(Some(r));
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									Err( (_, err) ) => {
 | 
				
			||||||
 | 
										return Err((args_ll, err));
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		Operator::Negative => {
 | 
							Operator::Negative => {
 | 
				
			||||||
			if args.len() != 1 { panic!() };
 | 
								if args.len() != 1 { panic!() };
 | 
				
			||||||
			let args = &args[0];
 | 
								let args = &args[0];
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user