-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: Refactor flatten and add validation
- Loading branch information
Christopher Kim
committed
Mar 11, 2023
1 parent
c074a00
commit 8d26c98
Showing
2 changed files
with
30 additions
and
42 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
locals { | ||
x01 = { this = { for k, v in var.in : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, next = merge([for ki, vi in var.in : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x02 = { this = merge(local.x01.this, { for k, v in local.x01.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x01.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x03 = { this = merge(local.x02.this, { for k, v in local.x02.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x02.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x04 = { this = merge(local.x03.this, { for k, v in local.x03.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x03.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x05 = { this = merge(local.x04.this, { for k, v in local.x04.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x04.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x06 = { this = merge(local.x05.this, { for k, v in local.x05.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x05.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x07 = { this = merge(local.x06.this, { for k, v in local.x06.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x06.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x08 = { this = merge(local.x07.this, { for k, v in local.x07.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x07.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x09 = { this = merge(local.x08.this, { for k, v in local.x08.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x08.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x10 = { this = merge(local.x09.this, { for k, v in local.x09.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x09.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x11 = { this = merge(local.x10.this, { for k, v in local.x10.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x10.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x12 = { this = merge(local.x11.this, { for k, v in local.x11.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x11.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x13 = { this = merge(local.x12.this, { for k, v in local.x12.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x12.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x14 = { this = merge(local.x13.this, { for k, v in local.x13.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x13.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x15 = { this = merge(local.x14.this, { for k, v in local.x14.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x14.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x16 = { this = merge(local.x15.this, { for k, v in local.x15.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x15.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x17 = { this = merge(local.x16.this, { for k, v in local.x16.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x16.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x18 = { this = merge(local.x17.this, { for k, v in local.x17.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x17.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x19 = { this = merge(local.x18.this, { for k, v in local.x18.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x18.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
x20 = { this = merge(local.x19.this, { for k, v in local.x19.next : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }), next = merge([for ki, vi in local.x19.next : { for kj, vj in vi : join(var.separator, [ki, kj]) => vj } if !can(tobool(vi)) && !can(tolist(vi)) && !can(tonumber(vi)) && !can(tostring(vi))]...) } | ||
|
||
last = local.x20 | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,8 @@ | ||
output "out" { | ||
value = merge( | ||
{ for k, v in var.in : k => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k1, v1 in var.in : merge( | ||
{ for k, v in v1 : join(var.separator, [k1, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k2, v2 in v1 : merge( | ||
{ for k, v in v2 : join(var.separator, [k1, k2, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k3, v3 in v2 : merge( | ||
{ for k, v in v3 : join(var.separator, [k1, k2, k3, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k4, v4 in v3 : merge( | ||
{ for k, v in v4 : join(var.separator, [k1, k2, k3, k4, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k5, v5 in v4 : merge( | ||
{ for k, v in v5 : join(var.separator, [k1, k2, k3, k4, k5, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k6, v6 in v5 : merge( | ||
{ for k, v in v6 : join(var.separator, [k1, k2, k3, k4, k5, k6, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k7, v7 in v6 : merge( | ||
{ for k, v in v7 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k8, v8 in v7 : merge( | ||
{ for k, v in v8 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k8, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k9, v9 in v8 : merge( | ||
{ for k, v in v9 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k8, k9, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k10, v10 in v9 : merge( | ||
{ for k, v in v10 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k11, v11 in v10 : merge( | ||
{ for k, v in v11 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k12, v12 in v11 : merge( | ||
{ for k, v in v12 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k13, v13 in v12 : merge( | ||
{ for k, v in v13 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k14, v14 in v13 : merge( | ||
{ for k, v in v14 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k15, v15 in v14 : merge( | ||
{ for k, v in v15 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k16, v16 in v15 : merge( | ||
{ for k, v in v16 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k17, v17 in v16 : merge( | ||
{ for k, v in v17 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k18, v18 in v17 : merge( | ||
{ for k, v in v18 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k19, v19 in v18 : merge( | ||
{ for k, v in v19 : join(var.separator, [k1, k2, k3, k4, k5, k6, k7, k8, k9, k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k]) => v if can(tobool(v)) || can(tolist(v)) || can(tonumber(v)) || can(tostring(v)) }, [for k20, v20 in v19 : merge( | ||
) if !can(tobool(v20)) && !can(tolist(v20)) && !can(tonumber(v20)) && !can(tostring(v20))]... | ||
) if !can(tobool(v19)) && !can(tolist(v19)) && !can(tonumber(v19)) && !can(tostring(v19))]... | ||
) if !can(tobool(v18)) && !can(tolist(v18)) && !can(tonumber(v18)) && !can(tostring(v18))]... | ||
) if !can(tobool(v17)) && !can(tolist(v17)) && !can(tonumber(v17)) && !can(tostring(v17))]... | ||
) if !can(tobool(v16)) && !can(tolist(v16)) && !can(tonumber(v16)) && !can(tostring(v16))]... | ||
) if !can(tobool(v15)) && !can(tolist(v15)) && !can(tonumber(v15)) && !can(tostring(v15))]... | ||
) if !can(tobool(v14)) && !can(tolist(v14)) && !can(tonumber(v14)) && !can(tostring(v14))]... | ||
) if !can(tobool(v13)) && !can(tolist(v13)) && !can(tonumber(v13)) && !can(tostring(v13))]... | ||
) if !can(tobool(v12)) && !can(tolist(v12)) && !can(tonumber(v12)) && !can(tostring(v12))]... | ||
) if !can(tobool(v11)) && !can(tolist(v11)) && !can(tonumber(v11)) && !can(tostring(v11))]... | ||
) if !can(tobool(v10)) && !can(tolist(v10)) && !can(tonumber(v10)) && !can(tostring(v10))]... | ||
) if !can(tobool(v9)) && !can(tolist(v9)) && !can(tonumber(v9)) && !can(tostring(v9))]... | ||
) if !can(tobool(v8)) && !can(tolist(v8)) && !can(tonumber(v8)) && !can(tostring(v8))]... | ||
) if !can(tobool(v7)) && !can(tolist(v7)) && !can(tonumber(v7)) && !can(tostring(v7))]... | ||
) if !can(tobool(v6)) && !can(tolist(v6)) && !can(tonumber(v6)) && !can(tostring(v6))]... | ||
) if !can(tobool(v5)) && !can(tolist(v5)) && !can(tonumber(v5)) && !can(tostring(v5))]... | ||
) if !can(tobool(v4)) && !can(tolist(v4)) && !can(tonumber(v4)) && !can(tostring(v4))]... | ||
) if !can(tobool(v3)) && !can(tolist(v3)) && !can(tonumber(v3)) && !can(tostring(v3))]... | ||
) if !can(tobool(v2)) && !can(tolist(v2)) && !can(tonumber(v2)) && !can(tostring(v2))]... | ||
) if !can(tobool(v1)) && !can(tolist(v1)) && !can(tonumber(v1)) && !can(tostring(v1))]... | ||
) | ||
value = local.last.this | ||
|
||
precondition { | ||
condition = local.last.next == {} | ||
error_message = "var.in has a depth greater than 20" | ||
} | ||
} |