forked from extern/nushell
Remove Span::unknown (#525)
This commit is contained in:
@ -15,7 +15,7 @@ pub struct DocumentationConfig {
|
||||
brief: bool,
|
||||
}
|
||||
|
||||
fn generate_doc(name: &str, engine_state: &EngineState) -> (Vec<String>, Vec<Value>) {
|
||||
fn generate_doc(name: &str, engine_state: &EngineState, head: Span) -> (Vec<String>, Vec<Value>) {
|
||||
let mut cols = vec![];
|
||||
let mut vals = vec![];
|
||||
|
||||
@ -27,20 +27,20 @@ fn generate_doc(name: &str, engine_state: &EngineState) -> (Vec<String>, Vec<Val
|
||||
cols.push("name".to_string());
|
||||
vals.push(Value::String {
|
||||
val: name.into(),
|
||||
span: Span::unknown(),
|
||||
span: head,
|
||||
});
|
||||
|
||||
cols.push("usage".to_string());
|
||||
vals.push(Value::String {
|
||||
val: command.usage().to_owned(),
|
||||
span: Span::unknown(),
|
||||
span: head,
|
||||
});
|
||||
|
||||
if let Some(link) = retrieve_doc_link(name) {
|
||||
cols.push("doc_link".into());
|
||||
vals.push(Value::String {
|
||||
val: link,
|
||||
span: Span::unknown(),
|
||||
span: head,
|
||||
});
|
||||
}
|
||||
|
||||
@ -56,14 +56,14 @@ fn generate_doc(name: &str, engine_state: &EngineState) -> (Vec<String>, Vec<Val
|
||||
brief: false,
|
||||
},
|
||||
),
|
||||
span: Span::unknown(),
|
||||
span: head,
|
||||
});
|
||||
|
||||
(cols, vals)
|
||||
}
|
||||
|
||||
// generate_docs gets the documentation from each command and returns a Table as output
|
||||
pub fn generate_docs(engine_state: &EngineState) -> Value {
|
||||
pub fn generate_docs(engine_state: &EngineState, head: Span) -> Value {
|
||||
let signatures = engine_state.get_signatures(true);
|
||||
|
||||
// cmap will map parent commands to it's subcommands e.g. to -> [to csv, to yaml, to bson]
|
||||
@ -90,15 +90,15 @@ pub fn generate_docs(engine_state: &EngineState) -> Value {
|
||||
if !cmap.contains_key(&sig.name) {
|
||||
continue;
|
||||
}
|
||||
let mut row_entries = generate_doc(&sig.name, engine_state);
|
||||
let mut row_entries = generate_doc(&sig.name, engine_state, head);
|
||||
// Iterate over all the subcommands of the parent command
|
||||
let mut sub_table = Vec::new();
|
||||
for sub_name in cmap.get(&sig.name).unwrap_or(&Vec::new()) {
|
||||
let (cols, vals) = generate_doc(sub_name, engine_state);
|
||||
let (cols, vals) = generate_doc(sub_name, engine_state, head);
|
||||
sub_table.push(Value::Record {
|
||||
cols,
|
||||
vals,
|
||||
span: Span::unknown(),
|
||||
span: head,
|
||||
});
|
||||
}
|
||||
|
||||
@ -106,18 +106,18 @@ pub fn generate_docs(engine_state: &EngineState) -> Value {
|
||||
row_entries.0.push("subcommands".into());
|
||||
row_entries.1.push(Value::List {
|
||||
vals: sub_table,
|
||||
span: Span::unknown(),
|
||||
span: head,
|
||||
});
|
||||
}
|
||||
table.push(Value::Record {
|
||||
cols: row_entries.0,
|
||||
vals: row_entries.1,
|
||||
span: Span::unknown(),
|
||||
span: head,
|
||||
});
|
||||
}
|
||||
Value::List {
|
||||
vals: table,
|
||||
span: Span::unknown(),
|
||||
span: head,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -67,7 +67,7 @@ fn eval_call(
|
||||
let span = if let Some(rest_item) = rest_items.first() {
|
||||
rest_item.span()?
|
||||
} else {
|
||||
Span::unknown()
|
||||
call.head
|
||||
};
|
||||
|
||||
stack.add_var(
|
||||
@ -152,7 +152,7 @@ fn eval_external(
|
||||
call.named.push((
|
||||
Spanned {
|
||||
item: "last_expression".into(),
|
||||
span: Span::unknown(),
|
||||
span: *name_span,
|
||||
},
|
||||
None,
|
||||
))
|
||||
@ -191,25 +191,19 @@ pub fn eval_expression(
|
||||
let from = if let Some(f) = from {
|
||||
eval_expression(engine_state, stack, f)?
|
||||
} else {
|
||||
Value::Nothing {
|
||||
span: Span::unknown(),
|
||||
}
|
||||
Value::Nothing { span: expr.span }
|
||||
};
|
||||
|
||||
let next = if let Some(s) = next {
|
||||
eval_expression(engine_state, stack, s)?
|
||||
} else {
|
||||
Value::Nothing {
|
||||
span: Span::unknown(),
|
||||
}
|
||||
Value::Nothing { span: expr.span }
|
||||
};
|
||||
|
||||
let to = if let Some(t) = to {
|
||||
eval_expression(engine_state, stack, t)?
|
||||
} else {
|
||||
Value::Nothing {
|
||||
span: Span::unknown(),
|
||||
}
|
||||
Value::Nothing { span: expr.span }
|
||||
};
|
||||
|
||||
Ok(Value::Range {
|
||||
@ -228,9 +222,7 @@ pub fn eval_expression(
|
||||
|
||||
value.follow_cell_path(&cell_path.tail)
|
||||
}
|
||||
Expr::ImportPattern(_) => Ok(Value::Nothing {
|
||||
span: Span::unknown(),
|
||||
}),
|
||||
Expr::ImportPattern(_) => Ok(Value::Nothing { span: expr.span }),
|
||||
Expr::Call(call) => {
|
||||
// FIXME: protect this collect with ctrl-c
|
||||
Ok(
|
||||
|
Reference in New Issue
Block a user