def _transform_prop_or_attr()

in rostran/providers/terraform/template.py [0:0]


    def _transform_prop_or_attr(self, value) -> (Any, bool):
        if isinstance(value, list):
            data = []
            resolved = True
            for v in value:
                val, resolved_ = self._transform_prop_or_attr(v)
                if resolved_ is False:
                    resolved = False
                data.append(val)
            return data, resolved
        elif isinstance(value, dict):
            if self.PROP_TYPE not in value:
                data = {}
                resolved = True
                for k, v in value.items():
                    val, resolved_ = self._transform_prop_or_attr(v)
                    if resolved_ is False:
                        resolved = False
                    data[k] = val
                return data, resolved

            prop_type = value.get(self.PROP_TYPE)
            if prop_type == self.PROP_TYPE_FUNC:
                prop_args = value.get(self.PROP_ARGS)
                prop_value = value.get(self.PROP_VALUE)
                if prop_value == self.FUNC_GET_ATT:
                    return (
                        self._transform_func_get_att(prop_args[0], prop_args[1]),
                        False,
                    )
            return None, True

        return value, True