github.com/hashicorp/terraform-plugin-sdk@v1.17.2/internal/addrs/local_value.go (about)

     1  package addrs
     2  
     3  import (
     4  	"fmt"
     5  )
     6  
     7  // LocalValue is the address of a local value.
     8  type LocalValue struct {
     9  	referenceable
    10  	Name string
    11  }
    12  
    13  func (v LocalValue) String() string {
    14  	return "local." + v.Name
    15  }
    16  
    17  // Absolute converts the receiver into an absolute address within the given
    18  // module instance.
    19  func (v LocalValue) Absolute(m ModuleInstance) AbsLocalValue {
    20  	return AbsLocalValue{
    21  		Module:     m,
    22  		LocalValue: v,
    23  	}
    24  }
    25  
    26  // AbsLocalValue is the absolute address of a local value within a module instance.
    27  type AbsLocalValue struct {
    28  	Module     ModuleInstance
    29  	LocalValue LocalValue
    30  }
    31  
    32  // LocalValue returns the absolute address of a local value of the given
    33  // name within the receiving module instance.
    34  func (m ModuleInstance) LocalValue(name string) AbsLocalValue {
    35  	return AbsLocalValue{
    36  		Module: m,
    37  		LocalValue: LocalValue{
    38  			Name: name,
    39  		},
    40  	}
    41  }
    42  
    43  func (v AbsLocalValue) String() string {
    44  	if len(v.Module) == 0 {
    45  		return v.LocalValue.String()
    46  	}
    47  	return fmt.Sprintf("%s.%s", v.Module.String(), v.LocalValue.String())
    48  }