commit
88b847852a
|
@ -10,6 +10,8 @@ impl<'a> Default for Engine<'a> {
|
|||
fn default() -> Self {
|
||||
let mut engine = rhai::Engine::new();
|
||||
engine.set_fast_operators(false);
|
||||
engine.register_static_module("physics", rhai::exported_module!(physics).into());
|
||||
engine.register_static_module("math", rhai::exported_module!(math).into());
|
||||
dataframe::setup_engine(&mut engine);
|
||||
|
||||
Self {
|
||||
|
@ -58,7 +60,7 @@ impl Default for Output {
|
|||
impl PartialEq for Output {
|
||||
fn eq(&self, other: &Self) -> bool {
|
||||
match (self, other) {
|
||||
(Self::Scalar(l0), Self::Scalar(r0)) => l0.to_string() == r0.to_string(),
|
||||
(Self::Scalar(l0), Self::Scalar(r0)) => *l0.to_string() == *r0.to_string(),
|
||||
(Self::DataFrame(l0), Self::DataFrame(r0)) => l0 == r0,
|
||||
(Self::Series(l0), Self::Series(r0)) => l0 == r0,
|
||||
(Self::Error(l0), Self::Error(r0)) => l0 == r0,
|
||||
|
@ -88,12 +90,39 @@ impl Output {
|
|||
}
|
||||
}
|
||||
|
||||
use rhai::plugin::*;
|
||||
|
||||
#[rhai::export_module]
|
||||
mod physics {
|
||||
pub const PLANK: f64 = 6.626e-34;
|
||||
pub const G: f64 = 6.67430e-11;
|
||||
pub const COULUMN: f64 = 8.987;
|
||||
pub const STEFAN_BOLTZMANN: f64 = 5.670e-8;
|
||||
pub const BOLTZMANN: f64 = 1.380650e23;
|
||||
pub const C: f64 = 299792458.0;
|
||||
pub const AVOGADRO: f64 = 6.02214076e23;
|
||||
|
||||
pub const ATOMIC_MASS: f64 = 1.66053906660e-27;
|
||||
pub const ELECTRON_MASS: f64 = 9.1093837015e-31;
|
||||
pub const PROTON_MASS: f64 = 1.67262192369e-27;
|
||||
pub const NEUTRON_MASS: f64 = 1.67492749804e-27;
|
||||
pub const HUBBLE: f64 = 69.3;
|
||||
}
|
||||
|
||||
#[rhai::export_module]
|
||||
mod math {
|
||||
pub const PI: f64 = std::f64::consts::PI;
|
||||
pub const E: f64 = std::f64::consts::E;
|
||||
pub const SQRT2: f64 = std::f64::consts::SQRT_2;
|
||||
pub const TAU: f64 = std::f64::consts::TAU;
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub mod tests {
|
||||
use super::*;
|
||||
|
||||
pub fn process(script: &str) -> Output {
|
||||
let mut engine = Engine::default();
|
||||
let mut engine = super::Engine::default();
|
||||
engine.process_script(script)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -330,6 +330,9 @@ impl EditorData {
|
|||
}
|
||||
|
||||
pub fn current_line_index(&self) -> usize {
|
||||
if self.cursor_pos == 0 {
|
||||
return 0;
|
||||
}
|
||||
self.content.char_to_line(self.cursor_pos)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue