Skip to content

Commit

Permalink
applied recommended changes
Browse files Browse the repository at this point in the history
  • Loading branch information
harshdoesdev authored and amitu committed Mar 8, 2024
1 parent 5a824cb commit 1151340
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 23 deletions.
14 changes: 2 additions & 12 deletions ftd/src/interpreter/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -278,20 +278,10 @@ fn test_extract_kwargs() {
.unwrap_or_else(|e| panic!("{:?}", e));

let tdoc = doc.tdoc();

let instructions = doc.get_instructions("foo#foo");
let instruction = instructions.first().unwrap();
let kwargs = instruction.get_kwargs("data", &tdoc).unwrap().unwrap();
// TODO: resolve value based on kwarg kind
let data: std::collections::BTreeMap<String, String> = kwargs
.iter()
.map(|(name, property_value)| {
(
name.to_string(),
property_value.to_value().get_string_data().unwrap(),
)
})
.collect();

let data = instruction.get_kwargs("data", &tdoc).unwrap();

assert_eq!(data.get("bar"), Some(&String::from("Hello")));
assert_eq!(data.get("baz"), Some(&String::from("World")));
Expand Down
41 changes: 30 additions & 11 deletions ftd/src/interpreter/things/component.rs
Original file line number Diff line number Diff line change
Expand Up @@ -226,19 +226,38 @@ impl Component {
&self,
kwargs_name: &str,
doc: &ftd::interpreter::TDoc,
) -> ftd::interpreter::Result<
Option<std::collections::BTreeMap<String, ftd::interpreter::PropertyValue>>,
> {
let property =
if let Some(property) = self.get_interpreter_value_of_argument(kwargs_name, doc)? {
property
} else {
return Ok(None);
};
) -> ftd::interpreter::Result<ftd::Map<String>> {
let property = match self.get_interpreter_value_of_argument(kwargs_name, doc)? {
Some(property) => property,
None => {
return Err(ftd::interpreter::Error::OtherError(format!(
"kw-args '{}' does not exists on component.",
kwargs_name
)));
}
};

let kwargs = property
.kwargs(doc.name, self.line_number)?
.iter()
.map(|(name, value)| {
let value = match value.to_value().get_string_data() {
Some(v) => v,
None => {
return Err(ftd::interpreter::Error::ParseError {
message: "Could not parse keyword argument value as string."
.to_string(),
doc_id: doc.name.to_string(),
line_number: value.line_number(),
});
}
};

let kwargs = property.kwargs(doc.name, self.line_number)?;
Ok((name.to_string(), value))
})
.collect::<Result<ftd::Map<String>, _>>()?;

Ok(Some(kwargs))
Ok(kwargs)
}

pub(crate) fn is_loop(&self) -> bool {
Expand Down

0 comments on commit 1151340

Please sign in to comment.