github.com/aquasecurity/trivy-iac@v0.8.1-0.20240127024015-3d8e412cf0ab/pkg/scanners/cloudformation/parser/reference.go (about)

     1  package parser
     2  
     3  import (
     4  	"fmt"
     5  
     6  	defsecTypes "github.com/aquasecurity/defsec/pkg/types"
     7  )
     8  
     9  type CFReference struct {
    10  	logicalId     string
    11  	resourceRange defsecTypes.Range
    12  	resolvedValue Property
    13  }
    14  
    15  func NewCFReference(id string, resourceRange defsecTypes.Range) CFReference {
    16  	return CFReference{
    17  		logicalId:     id,
    18  		resourceRange: resourceRange,
    19  	}
    20  }
    21  
    22  func NewCFReferenceWithValue(resourceRange defsecTypes.Range, resolvedValue Property, logicalId string) CFReference {
    23  	return CFReference{
    24  		resourceRange: resourceRange,
    25  		resolvedValue: resolvedValue,
    26  		logicalId:     logicalId,
    27  	}
    28  }
    29  
    30  func (cf CFReference) String() string {
    31  	return cf.resourceRange.String()
    32  }
    33  
    34  func (cf CFReference) LogicalID() string {
    35  	return cf.logicalId
    36  }
    37  
    38  func (cf CFReference) ResourceRange() defsecTypes.Range {
    39  	return cf.resourceRange
    40  }
    41  
    42  func (cf CFReference) PropertyRange() defsecTypes.Range {
    43  	if cf.resolvedValue.IsNotNil() {
    44  		return cf.resolvedValue.Range()
    45  	}
    46  	return defsecTypes.Range{}
    47  }
    48  
    49  func (cf CFReference) DisplayValue() string {
    50  	if cf.resolvedValue.IsNotNil() {
    51  		return fmt.Sprintf("%v", cf.resolvedValue.RawValue())
    52  	}
    53  	return ""
    54  }
    55  
    56  func (cf *CFReference) Comment() string {
    57  	return cf.resolvedValue.Comment()
    58  }