package flow

import "github.com/projectdiscovery/nuclei/v3/pkg/operators"

// Checks if template has matchers
func hasMatchers(all []*operators.Operators) bool {
	for _, operator := range all {
		if operator != nil && len(operator.Matchers) > 0 {
			return true
		}
	}
	return false
}

// hasOperators checks if template has operators (i.e matchers/extractors)
func hasOperators(all []*operators.Operators) bool {
	for _, operator := range all {
		if operator != nil {
			return true
		}
	}
	return false
}

func flatten(v interface{}) interface{} {
	switch v := v.(type) {
	case []interface{}:
		if len(v) == 1 {
			return v[0]
		}
		return v
	case []string:
		if len(v) == 1 {
			return v[0]
		}
		return v
	default:
		return v
	}
}
