github.com/franklinhu/terraform@v0.6.9-0.20151202232446-81f7fb1e6f9e/config/lang/transform_fixed.go (about)

     1  package lang
     2  
     3  import (
     4  	"github.com/hashicorp/terraform/config/lang/ast"
     5  )
     6  
     7  // FixedValueTransform transforms an AST to return a fixed value for
     8  // all interpolations. i.e. you can make "hello ${anything}" always
     9  // turn into "hello foo".
    10  func FixedValueTransform(root ast.Node, Value *ast.LiteralNode) ast.Node {
    11  	// We visit the nodes in top-down order
    12  	result := root
    13  	switch n := result.(type) {
    14  	case *ast.Concat:
    15  		for i, v := range n.Exprs {
    16  			n.Exprs[i] = FixedValueTransform(v, Value)
    17  		}
    18  	case *ast.LiteralNode:
    19  		// We keep it as-is
    20  	default:
    21  		// Anything else we replace
    22  		result = Value
    23  	}
    24  
    25  	return result
    26  }