Skip to content

Commit

Permalink
FTD.LENGTH VARIANT FROM RECORD TO REGULAR
Browse files Browse the repository at this point in the history
  • Loading branch information
Arpita-Jaiswal committed Dec 30, 2022
1 parent 93c8eec commit c4e7e59
Show file tree
Hide file tree
Showing 19 changed files with 173 additions and 258 deletions.
39 changes: 2 additions & 37 deletions src/executor/styles.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,83 +39,48 @@ impl Length {
.1
.clone()
.resolve(&doc.itdoc(), line_number)?
.record_fields(doc.name, line_number)?
.get(ftd::interpreter2::FTD_LENGTH_VALUE)
.unwrap()
.clone()
.resolve(&doc.itdoc(), line_number)?
.decimal(doc.name, line_number)?,
)),
ftd::interpreter2::FTD_LENGTH_PX => Ok(Length::Px(
or_type_value
.1
.clone()
.resolve(&doc.itdoc(), line_number)?
.record_fields(doc.name, line_number)?
.get(ftd::interpreter2::FTD_LENGTH_VALUE)
.unwrap()
.clone()
.resolve(&doc.itdoc(), line_number)?
.integer(doc.name, line_number)?,
)),
ftd::interpreter2::FTD_LENGTH_CALC => Ok(Length::Calc(
or_type_value
.1
.clone()
.resolve(&doc.itdoc(), line_number)?
.record_fields(doc.name, line_number)?
.get(ftd::interpreter2::FTD_LENGTH_VALUE)
.unwrap()
.clone()
.resolve(&doc.itdoc(), line_number)?
.string(doc.name, line_number)?,
)),
ftd::interpreter2::FTD_LENGTH_VH => Ok(Length::Vh(
or_type_value
.1
.clone()
.resolve(&doc.itdoc(), line_number)?
.record_fields(doc.name, line_number)?
.get(ftd::interpreter2::FTD_LENGTH_VALUE)
.unwrap()
.clone()
.resolve(&doc.itdoc(), line_number)?
.decimal(doc.name, line_number)?,
)),
ftd::interpreter2::FTD_LENGTH_VW => Ok(Length::Vw(
or_type_value
.1
.clone()
.resolve(&doc.itdoc(), line_number)?
.record_fields(doc.name, line_number)?
.get(ftd::interpreter2::FTD_LENGTH_VALUE)
.unwrap()
.clone()
.resolve(&doc.itdoc(), line_number)?
.decimal(doc.name, line_number)?,
)),
ftd::interpreter2::FTD_LENGTH_EM => Ok(Length::Em(
or_type_value
.1
.clone()
.resolve(&doc.itdoc(), line_number)?
.record_fields(doc.name, line_number)?
.get(ftd::interpreter2::FTD_LENGTH_VALUE)
.unwrap()
.clone()
.resolve(&doc.itdoc(), line_number)?
.decimal(doc.name, line_number)?,
)),
ftd::interpreter2::FTD_LENGTH_REM => Ok(Length::Rem(
or_type_value
.1
.clone()
.resolve(&doc.itdoc(), line_number)?
.record_fields(doc.name, line_number)?
.get(ftd::interpreter2::FTD_LENGTH_VALUE)
.unwrap()
.clone()
.resolve(&doc.itdoc(), line_number)?
.decimal(doc.name, line_number)?,
)),
t => ftd::executor::utils::parse_error(
Expand Down Expand Up @@ -197,7 +162,7 @@ impl Length {
| ftd::interpreter2::FTD_LENGTH_VH
| ftd::interpreter2::FTD_LENGTH_VW
| ftd::interpreter2::FTD_LENGTH_EM
| ftd::interpreter2::FTD_LENGTH_REM => Ok("({0}).value"),
| ftd::interpreter2::FTD_LENGTH_REM => Ok("{0}"),
t => ftd::executor::utils::parse_error(
format!("Unknown variant found for ftd.length: `{}`", t),
doc_id,
Expand Down Expand Up @@ -636,7 +601,7 @@ impl Resizing {
let variant = format!("{}.{}", ftd::interpreter2::FTD_LENGTH, remaining);
Ok((
Length::get_pattern_from_variant_str(variant.as_str(), doc_id, line_number)?,
true,
false,
))
}
ftd::interpreter2::FTD_RESIZING_FILL_CONTAINER => Ok(("100%", false)),
Expand Down
31 changes: 19 additions & 12 deletions src/html1/data.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,22 +52,13 @@ impl<'a> DataGenerator<'a> {
Some(ftd::interpreter2::Value::String { text: value, .. }) => {
serde_json::to_value(value).ok()
}
Some(ftd::interpreter2::Value::Record { fields, name }) => {
Some(ftd::interpreter2::Value::Record { fields, .. }) => {
let mut value_fields = ftd::Map::new();
for (k, v) in fields {
if let Some(value) =
get_value(doc, &v.clone().resolve(doc, v.line_number())?)?
{
if let Ok(pattern) = ftd::executor::Length::set_value_from_variant(
name.as_str(),
value.to_string().as_str(),
doc.name,
0,
) {
value_fields.insert(k, serde_json::to_value(pattern).unwrap());
} else {
value_fields.insert(k, value);
}
value_fields.insert(k, value);
}
}
serde_json::to_value(value_fields).ok()
Expand All @@ -76,11 +67,27 @@ impl<'a> DataGenerator<'a> {
value,
variant,
full_variant,
name,
..
}) => {
let value = get_value(doc, &value.clone().resolve(doc, value.line_number())?)?;
match value {
Some(value) if variant.ne(ftd::interpreter2::FTD_RESIZING_FIXED) => {
Some(value) if name.eq(ftd::interpreter2::FTD_LENGTH) => {
if let Ok(pattern) = ftd::executor::Length::set_value_from_variant(
variant.as_str(),
value.to_string().as_str(),
doc.name,
0,
) {
serde_json::to_value(pattern).ok()
} else {
Some(value)
}
}
Some(value)
if name.eq(ftd::interpreter2::FTD_RESIZING_FIXED)
&& variant.ne(ftd::interpreter2::FTD_RESIZING_FIXED) =>
{
if let Ok(pattern) = ftd::executor::Resizing::set_value_from_variant(
variant.as_str(),
full_variant.as_str(),
Expand Down
28 changes: 12 additions & 16 deletions src/html1/dependencies.rs
Original file line number Diff line number Diff line change
Expand Up @@ -466,14 +466,12 @@ fn is_static_expression(
value, line_number, ..
} = property_value
{
if let Ok(fields) = value.or_type_fields(doc, *line_number) {
if !fields
.get(ftd::interpreter2::FTD_LENGTH_VALUE)
.map(|v| v.is_value())
.unwrap_or(true)
{
return false;
}
if !value
.get_or_type(doc.name, *line_number)
.map(|v| v.2.is_value())
.unwrap_or(false)
{
return false;
}
}
}
Expand All @@ -489,14 +487,12 @@ fn is_static_expression(
value, line_number, ..
} = property_value
{
if let Ok(fields) = value.or_type_fields(doc, *line_number) {
if !fields
.get(ftd::interpreter2::FTD_LENGTH_VALUE)
.map(|v| v.is_value())
.unwrap_or(true)
{
return false;
}
if !value
.get_or_type(doc.name, *line_number)
.map(|v| v.2.is_value())
.unwrap_or(false)
{
return false;
}
}
}
Expand Down
7 changes: 1 addition & 6 deletions src/html1/functions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -143,12 +143,7 @@ impl ExpressionGenerator {
for children in child.children() {
let mut value = self.to_string(children, false, arguments);
if self.is_tuple(children.operator()) {
value = value
.strip_prefix("(")
.unwrap()
.strip_suffix(")")
.unwrap()
.to_string();
value = value[1..value.len() - 1].to_string();
}
result.push(value);
}
Expand Down
43 changes: 22 additions & 21 deletions src/html1/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -178,11 +178,8 @@ pub(crate) fn dependencies_from_property_value(
result
} else if property_value.is_value() && property_value.kind().is_ftd_length() {
let value = property_value.value("", 0).unwrap();
let fields = value.or_type_fields(doc, 0).unwrap();
dependencies_from_property_value(
fields.get(ftd::interpreter2::FTD_LENGTH_VALUE).unwrap(),
doc,
)
let property_value = value.get_or_type(doc.name, 0).unwrap().2;
dependencies_from_property_value(property_value, doc)
} else if property_value.is_value() && property_value.kind().is_ftd_resizing_fixed() {
let value = property_value.value("", 0).unwrap();
let property_value = value
Expand All @@ -191,11 +188,8 @@ pub(crate) fn dependencies_from_property_value(
.2;
if property_value.is_value() && property_value.kind().is_ftd_length() {
let value = property_value.value("", 0).unwrap();
let fields = value.or_type_fields(doc, 0).unwrap();
dependencies_from_property_value(
fields.get(ftd::interpreter2::FTD_LENGTH_VALUE).unwrap(),
doc,
)
let property_value = value.get_or_type(doc.name, 0).unwrap().2;
dependencies_from_property_value(property_value, doc)
} else {
vec![]
}
Expand Down Expand Up @@ -298,11 +292,26 @@ impl ftd::interpreter2::Value {
value,
variant,
full_variant,
name,
..
} => {
let value = value.to_string(doc, field, id, string_needs_no_quotes)?;
match value {
Some(value) if variant.ne(ftd::interpreter2::FTD_RESIZING_FIXED) => {
Some(value) if name.eq(ftd::interpreter2::FTD_LENGTH) => {
if let Ok(pattern) = ftd::executor::Length::set_pattern_from_variant_str(
variant,
doc.name,
line_number,
) {
Some(format!("`{}`.format(JSONstringify({}))", pattern, value))
} else {
Some(value)
}
}
Some(value)
if name.eq(ftd::interpreter2::FTD_RESIZING)
&& variant.ne(ftd::interpreter2::FTD_RESIZING_FIXED) =>
{
if let Ok(pattern) = ftd::executor::Resizing::set_pattern_from_variant_str(
variant,
full_variant,
Expand All @@ -318,21 +327,13 @@ impl ftd::interpreter2::Value {
None => None,
}
}
ftd::interpreter2::Value::Record { fields, name } => {
ftd::interpreter2::Value::Record { fields, .. } => {
let mut values = vec![];
for (k, v) in fields {
let value = if let Some(v) =
v.to_string(doc, field.clone(), id, string_needs_no_quotes)?
{
if let Ok(pattern) = ftd::executor::Length::set_pattern_from_variant_str(
name,
doc.name,
line_number,
) {
format!("`{}`.format(JSONstringify({}))", pattern, v)
} else {
v
}
v
} else {
"null".to_string()
};
Expand Down
Loading

0 comments on commit c4e7e59

Please sign in to comment.