github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scanners/azure/arm/parser/armjson/parse_boolean.go (about)

     1  package armjson
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/khulnasoft-lab/defsec/pkg/types"
     7  )
     8  
     9  var trueRunes = []rune("true")
    10  var falseRunes = []rune("false")
    11  
    12  func (p *parser) parseBoolean(parentMetadata *types.Metadata) (Node, error) {
    13  
    14  	n, _ := p.newNode(KindBoolean, parentMetadata)
    15  
    16  	r, err := p.peeker.Peek()
    17  	if err != nil {
    18  		return nil, err
    19  	}
    20  
    21  	if r == 't' {
    22  		for _, expected := range trueRunes {
    23  			if !p.swallowIfEqual(expected) {
    24  				return nil, fmt.Errorf("unexpected character in boolean value")
    25  			}
    26  		}
    27  		n.raw = true
    28  		n.end = p.position
    29  		return n, err
    30  	}
    31  
    32  	for _, expected := range falseRunes {
    33  		if !p.swallowIfEqual(expected) {
    34  			return nil, fmt.Errorf("unexpected character in boolean value")
    35  		}
    36  	}
    37  	n.raw = false
    38  	n.end = p.position
    39  	return n, nil
    40  }