Commit Graph

16 Commits

Author SHA1 Message Date
James Bardin ba60fd12ae Add another comment for reference 2017-01-09 09:43:45 -05:00
James Bardin 1cec04b8a7 Add test for set expansion in flatmap.Expand 2017-01-04 16:11:46 -05:00
James Bardin 85d8fba3bd Minor fixups to expandArray
Find the index keys by comparing the strings directly, so we don't need
to worry about the prefix value altering the regex.
2017-01-04 16:03:24 -05:00
Andrew Garrett 497010ce42 Fix string representation of sets during interpolation
The change in #10787 used flatmap.Expand to fix interpolation of nested
maps, but it broke interpolation of sets such that their elements were
not represented. For example, the expected string representation of a
splatted aws_network_interface.whatever.*.private_ips should be:

```
[{Variable (TypeList): [{Variable (TypeString): 10.41.17.25}]} {Variable (TypeList): [{Variable (TypeString): 10.41.22.236}]}]
```

But instead it became:

```
[{Variable (TypeList): [{Variable (TypeString): }]} {Variable (TypeList): [{Variable (TypeString): }]}]
```

This is because the expandArray function of expand.go treated arrays to
exclusively be lists, e.g. not sets. The old code used to match for
numeric keys, so it would work for sets, whereas expandArray just
assumed keys started at 0 and ascended incrementally. Remember that
sets' keys are numeric, but since they are hashes, they can be any
integer. The result of assuming that the keys start at 0 led to the
recursive call to flatmap.Expand not matching any keys of the set, and
returning nil, which is why the above example has nothing where the IP
addresses used to be.

So we bring back that matching behavior, but we move it to expandArray
instead. We've modified it to not reconstruct the data structures like
it used to when it was in the Interpolator, and to use the standard int
sorter rather than implementing a custom sorter since a custom one is no
longer necessary thanks to the use of flatmap.Expand.

Fixes #10908, and restores the viability of the workaround I posted in #8696.

Big thanks to @jszwedko for helping me with this fix. I was able to
diagnose the problem along, but couldn't fix it without his help.
2016-12-23 23:37:03 +00:00
James Bardin c7f5d8b7e7 Add tests for nested structues in flatmap.Expand 2016-12-16 16:34:08 -05:00
James Bardin 5b5e892d4b fix flatmap.Expand
flatmap.Expand was adding `%` as a value in nested maps. Removing that
allows us properly expand objects other than a simple map.
2016-12-16 10:36:26 -05:00
Mitchell Hashimoto 308b88a8d8 flatmap: never auto-convert ints 2014-07-24 11:41:01 -07:00
Mitchell Hashimoto 45a2988471 fmt 2014-07-14 21:56:34 -07:00
Mitchell Hashimoto 50db4deb16 flatmap: add Contains 2014-07-14 21:40:29 -07:00
Mitchell Hashimoto 485bc668bf flatmap: deterministic tests 2014-07-10 13:32:16 -07:00
Mitchell Hashimoto f0ff4fad74 flatmap: add Keys() and Merge() 2014-07-09 16:44:02 -07:00
Mitchell Hashimoto 16485ba3ca flatmap: add richer API to resulting flattened map 2014-07-09 15:26:47 -07:00
Mitchell Hashimoto 1277c324d0 flatmap: deeper nesting tests 2014-07-08 13:57:55 -07:00
Mitchell Hashimoto d2d6ef64aa flatmap: remove Map for now 2014-07-01 13:32:38 -07:00
Mitchell Hashimoto ad2f448911 flatmap: expand 2014-07-01 13:25:54 -07:00
Mitchell Hashimoto eb1aadf9ce flatmap: Flatten 2014-07-01 13:04:12 -07:00