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 }