nu_engine/
eval_helpers.rs1use crate::{
2 eval_block, eval_block_with_early_return, eval_expression, eval_expression_with_input,
3 eval_ir_block, eval_subexpression,
4};
5use nu_protocol::{
6 ast::{Block, Expression},
7 debugger::{WithDebug, WithoutDebug},
8 engine::{EngineState, Stack},
9 PipelineData, ShellError, Value,
10};
11
12pub type EvalBlockFn =
14 fn(&EngineState, &mut Stack, &Block, PipelineData) -> Result<PipelineData, ShellError>;
15
16pub type EvalIrBlockFn =
18 fn(&EngineState, &mut Stack, &Block, PipelineData) -> Result<PipelineData, ShellError>;
19
20pub type EvalBlockWithEarlyReturnFn =
22 fn(&EngineState, &mut Stack, &Block, PipelineData) -> Result<PipelineData, ShellError>;
23
24pub type EvalExpressionFn = fn(&EngineState, &mut Stack, &Expression) -> Result<Value, ShellError>;
26
27pub type EvalExpressionWithInputFn =
29 fn(&EngineState, &mut Stack, &Expression, PipelineData) -> Result<PipelineData, ShellError>;
30
31pub type EvalSubexpressionFn =
33 fn(&EngineState, &mut Stack, &Block, PipelineData) -> Result<PipelineData, ShellError>;
34
35pub fn get_eval_block(engine_state: &EngineState) -> EvalBlockFn {
38 if engine_state.is_debugging() {
39 eval_block::<WithDebug>
40 } else {
41 eval_block::<WithoutDebug>
42 }
43}
44
45pub fn get_eval_ir_block(engine_state: &EngineState) -> EvalIrBlockFn {
48 if engine_state.is_debugging() {
49 eval_ir_block::<WithDebug>
50 } else {
51 eval_ir_block::<WithoutDebug>
52 }
53}
54
55pub fn get_eval_block_with_early_return(engine_state: &EngineState) -> EvalBlockWithEarlyReturnFn {
58 if engine_state.is_debugging() {
59 eval_block_with_early_return::<WithDebug>
60 } else {
61 eval_block_with_early_return::<WithoutDebug>
62 }
63}
64
65pub fn get_eval_expression(engine_state: &EngineState) -> EvalExpressionFn {
68 if engine_state.is_debugging() {
69 eval_expression::<WithDebug>
70 } else {
71 eval_expression::<WithoutDebug>
72 }
73}
74
75pub fn get_eval_expression_with_input(engine_state: &EngineState) -> EvalExpressionWithInputFn {
78 if engine_state.is_debugging() {
79 eval_expression_with_input::<WithDebug>
80 } else {
81 eval_expression_with_input::<WithoutDebug>
82 }
83}
84
85pub fn get_eval_subexpression(engine_state: &EngineState) -> EvalSubexpressionFn {
88 if engine_state.is_debugging() {
89 eval_subexpression::<WithDebug>
90 } else {
91 eval_subexpression::<WithoutDebug>
92 }
93}