Fix main function and bench script
This commit is contained in:
parent
270c2fd1dc
commit
363ecf444b
@ -9,9 +9,27 @@
|
|||||||
|
|
||||||
hyperfine \
|
hyperfine \
|
||||||
--shell none \
|
--shell none \
|
||||||
--parameter-list data_path examples/assets/seaCreatures.json,examples/assets/jq_data.json,dielectron.json \
|
--parameter-list data_path examples/assets/seaCreatures.json \
|
||||||
--warmup 3 \
|
--warmup 3 \
|
||||||
"dust -c 'length(from_json(input))' -p {data_path}" \
|
"dust -c 'length(json:parse(input))' -p {data_path}" \
|
||||||
|
"jq 'length' {data_path}" \
|
||||||
|
"node --eval \"require('node:fs').readFile('{data_path}', (err, data)=>{console.log(JSON.parse(data).length)})\"" \
|
||||||
|
"nu -c 'open {data_path} | length'"
|
||||||
|
|
||||||
|
hyperfine \
|
||||||
|
--shell none \
|
||||||
|
--parameter-list data_path examples/assets/jq_data.json \
|
||||||
|
--warmup 3 \
|
||||||
|
"dust -c 'length(json:parse(input))' -p {data_path}" \
|
||||||
|
"jq 'length' {data_path}" \
|
||||||
|
"node --eval \"require('node:fs').readFile('{data_path}', (err, data)=>{console.log(JSON.parse(data).length)})\"" \
|
||||||
|
"nu -c 'open {data_path} | length'"
|
||||||
|
|
||||||
|
hyperfine \
|
||||||
|
--shell none \
|
||||||
|
--parameter-list data_path dielectron.json \
|
||||||
|
--warmup 3 \
|
||||||
|
"dust -c 'length(json:parse(input))' -p {data_path}" \
|
||||||
"jq 'length' {data_path}" \
|
"jq 'length' {data_path}" \
|
||||||
"node --eval \"require('node:fs').readFile('{data_path}', (err, data)=>{console.log(JSON.parse(data).length)})\"" \
|
"node --eval \"require('node:fs').readFile('{data_path}', (err, data)=>{console.log(JSON.parse(data).length)})\"" \
|
||||||
"nu -c 'open {data_path} | length'"
|
"nu -c 'open {data_path} | length'"
|
||||||
|
@ -138,7 +138,7 @@ impl Interpreter {
|
|||||||
|
|
||||||
formatted_source
|
formatted_source
|
||||||
} else {
|
} else {
|
||||||
"".to_string()
|
String::with_capacity(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
32
src/main.rs
32
src/main.rs
@ -51,19 +51,6 @@ fn main() {
|
|||||||
env_logger::init();
|
env_logger::init();
|
||||||
|
|
||||||
let args = Args::parse();
|
let args = Args::parse();
|
||||||
|
|
||||||
if args.path.is_none() && args.command.is_none() {
|
|
||||||
return run_cli_shell();
|
|
||||||
}
|
|
||||||
|
|
||||||
let source = if let Some(path) = &args.path {
|
|
||||||
read_to_string(path).unwrap()
|
|
||||||
} else if let Some(command) = &args.command {
|
|
||||||
command.clone()
|
|
||||||
} else {
|
|
||||||
"".to_string()
|
|
||||||
};
|
|
||||||
|
|
||||||
let context = Map::new();
|
let context = Map::new();
|
||||||
|
|
||||||
if let Some(input) = args.input {
|
if let Some(input) = args.input {
|
||||||
@ -80,6 +67,18 @@ fn main() {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if args.path.is_none() && args.command.is_none() {
|
||||||
|
return run_cli_shell(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
let source = if let Some(path) = &args.path {
|
||||||
|
read_to_string(path).unwrap()
|
||||||
|
} else if let Some(command) = args.command {
|
||||||
|
command
|
||||||
|
} else {
|
||||||
|
String::with_capacity(0)
|
||||||
|
};
|
||||||
|
|
||||||
let mut interpreter = Interpreter::new(context);
|
let mut interpreter = Interpreter::new(context);
|
||||||
|
|
||||||
if let Some(CliCommand::Syntax) = args.cli_command {
|
if let Some(CliCommand::Syntax) = args.cli_command {
|
||||||
@ -90,14 +89,14 @@ fn main() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let eval_result = interpreter.run(&source);
|
|
||||||
|
|
||||||
if let Some(CliCommand::Format) = args.cli_command {
|
if let Some(CliCommand::Format) = args.cli_command {
|
||||||
println!("{}", interpreter.format());
|
println!("{}", interpreter.format());
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let eval_result = interpreter.run(&source);
|
||||||
|
|
||||||
match eval_result {
|
match eval_result {
|
||||||
Ok(value) => {
|
Ok(value) => {
|
||||||
if !value.is_none() {
|
if !value.is_none() {
|
||||||
@ -183,8 +182,7 @@ impl Highlighter for DustReadline {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run_cli_shell() {
|
fn run_cli_shell(context: Map) {
|
||||||
let context = Map::new();
|
|
||||||
let mut interpreter = Interpreter::new(context);
|
let mut interpreter = Interpreter::new(context);
|
||||||
let mut rl: Editor<DustReadline, DefaultHistory> = Editor::new().unwrap();
|
let mut rl: Editor<DustReadline, DefaultHistory> = Editor::new().unwrap();
|
||||||
|
|
||||||
|
@ -94,20 +94,6 @@ impl Map {
|
|||||||
|
|
||||||
Ok(previous)
|
Ok(previous)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn unset_all(&self) -> Result<()> {
|
|
||||||
for (_key, (value, r#_type)) in self.variables.write()?.iter_mut() {
|
|
||||||
*value = Value::none();
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn clear(&self) -> Result<()> {
|
|
||||||
self.variables.write()?.clear();
|
|
||||||
|
|
||||||
Ok(())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Map {
|
impl Default for Map {
|
||||||
|
Loading…
Reference in New Issue
Block a user