github.com/getgauge/gauge@v1.6.9/parser/helper.go (about)

     1  /*----------------------------------------------------------------
     2   *  Copyright (c) ThoughtWorks, Inc.
     3   *  Licensed under the Apache License, Version 2.0
     4   *  See LICENSE in the project root for license information.
     5   *----------------------------------------------------------------*/
     6  
     7  package parser
     8  
     9  import "strconv"
    10  
    11  func isInState(currentState int, statesToCheck ...int) bool {
    12  	var mask int
    13  	for _, value := range statesToCheck {
    14  		mask |= value
    15  	}
    16  	return (mask & currentState) != 0
    17  }
    18  
    19  func isInAnyState(currentState int, statesToCheck ...int) bool {
    20  	for _, value := range statesToCheck {
    21  		if (currentState & value) != 0 {
    22  			return true
    23  		}
    24  	}
    25  	return false
    26  }
    27  
    28  func retainStates(currentState *int, statesToKeep ...int) {
    29  	var mask int
    30  	for _, value := range statesToKeep {
    31  		mask |= value
    32  	}
    33  	*currentState = mask & *currentState
    34  }
    35  
    36  func addStates(currentState *int, states ...int) {
    37  	var mask int
    38  	for _, value := range states {
    39  		mask |= value
    40  	}
    41  	*currentState = mask | *currentState
    42  }
    43  
    44  func isUnderline(text string, underlineChar rune) bool {
    45  	if len(text) == 0 || rune(text[0]) != underlineChar {
    46  		return false
    47  	}
    48  	for _, value := range text {
    49  		if rune(value) != underlineChar {
    50  			return false
    51  		}
    52  	}
    53  	return true
    54  }
    55  
    56  func areUnderlined(values []string) bool {
    57  	if len(values) == 0 {
    58  		return false
    59  	}
    60  	isValuesNonEmpty := false
    61  	for _, value := range values {
    62  		if len(value) == 0 {
    63  			continue
    64  		}
    65  		isValuesNonEmpty = true
    66  		if !isUnderline(value, rune('-')) {
    67  			return false
    68  		}
    69  	}
    70  	return isValuesNonEmpty
    71  }
    72  
    73  func arrayContains(array []string, toFind string) bool {
    74  	for _, value := range array {
    75  		if value == toFind {
    76  			return true
    77  		}
    78  	}
    79  	return false
    80  }
    81  
    82  // GetUnescapedString uses the go escape sequences to escape control characters and non printable characters.
    83  func GetUnescapedString(string1 string) string {
    84  	unescaped := strconv.Quote(string1)
    85  	return unescaped[1 : len(unescaped)-1]
    86  }