mirror of
https://github.com/nushell/nushell.git
synced 2025-06-30 14:40:06 +02:00
Reduce again the number of match calls (#7815)
- Reduce the number of match calls (see commit messages) - A few miscellaneous improvements
This commit is contained in:
@ -36,14 +36,10 @@ pub fn parse_selector_params(call: &EvaluatedCall, input: &Value) -> Result<Valu
|
||||
None => "".to_string(),
|
||||
};
|
||||
let as_html = call.has_flag("as-html");
|
||||
let attribute: String = match call.get_flag("attribute")? {
|
||||
Some(a) => a,
|
||||
None => "".to_string(),
|
||||
};
|
||||
let as_table: Value = match call.get_flag("as-table")? {
|
||||
Some(v) => v,
|
||||
None => Value::nothing(head),
|
||||
};
|
||||
let attribute = call.get_flag("attribute")?.unwrap_or_default();
|
||||
let as_table: Value = call
|
||||
.get_flag("as-table")?
|
||||
.unwrap_or_else(|| Value::nothing(head));
|
||||
|
||||
let inspect = call.has_flag("inspect");
|
||||
|
||||
@ -81,23 +77,22 @@ fn begin_selector_query(input_html: String, selector: Selector, span: Span) -> V
|
||||
selector.inspect,
|
||||
span,
|
||||
);
|
||||
} else if selector.attribute.is_empty() {
|
||||
execute_selector_query(
|
||||
input_html.as_str(),
|
||||
selector.query.as_str(),
|
||||
selector.as_html,
|
||||
selector.inspect,
|
||||
span,
|
||||
)
|
||||
} else {
|
||||
match selector.attribute.is_empty() {
|
||||
true => execute_selector_query(
|
||||
input_html.as_str(),
|
||||
selector.query.as_str(),
|
||||
selector.as_html,
|
||||
selector.inspect,
|
||||
span,
|
||||
),
|
||||
false => execute_selector_query_with_attribute(
|
||||
input_html.as_str(),
|
||||
selector.query.as_str(),
|
||||
selector.attribute.as_str(),
|
||||
selector.inspect,
|
||||
span,
|
||||
),
|
||||
}
|
||||
execute_selector_query_with_attribute(
|
||||
input_html.as_str(),
|
||||
selector.query.as_str(),
|
||||
selector.attribute.as_str(),
|
||||
selector.inspect,
|
||||
span,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -104,17 +104,18 @@ pub fn execute_xpath_query(
|
||||
fn build_xpath(xpath_str: &str, span: &Span) -> Result<sxd_xpath::XPath, LabeledError> {
|
||||
let factory = Factory::new();
|
||||
|
||||
match factory.build(xpath_str) {
|
||||
Ok(xpath) => xpath.ok_or_else(|| LabeledError {
|
||||
if let Ok(xpath) = factory.build(xpath_str) {
|
||||
xpath.ok_or_else(|| LabeledError {
|
||||
label: "invalid xpath query".to_string(),
|
||||
msg: "invalid xpath query".to_string(),
|
||||
span: Some(*span),
|
||||
}),
|
||||
Err(_) => Err(LabeledError {
|
||||
})
|
||||
} else {
|
||||
Err(LabeledError {
|
||||
label: "expected valid xpath query".to_string(),
|
||||
msg: "expected valid xpath query".to_string(),
|
||||
span: Some(*span),
|
||||
}),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user