Skip to content
Snippets Groups Projects
Select Git revision
  • feature/v1.3.60
  • develop default protected
  • main protected
  • release/v1.0.7
  • release/v1.0.0
  • feature/v0.9.5
  • release/v0.6.2
  • hotfix/v0.5.7
  • release/v0.5.6
  • release/v0.5.5
  • hotfix/v0.5.4
  • hotfix/v0.5.3
  • hotfix/v0.5.2
  • release/v0.5.1
  • hotfix/v0.5.0
  • hotfix/v0.4.9
  • hotfix/v0.4.8
  • hotfix/v0.4.7
  • release/v0.4.6
  • hotfix/v0.4.5
  • v1.3.55
  • v1.3.52
  • v1.3.50
  • v1.3.45
  • v1.3.42
  • v1.3.41
  • v1.3.40
  • v1.3.38
  • v1.3.37
  • v1.3.36
  • v1.3.35
  • v1.3.34
  • v1.3.33
  • v1.3.32
  • v1.3.31
  • v1.3.30
  • v1.3.29
  • v1.3.28
  • v1.3.27
  • v1.3.26
40 results

ValidValue.go

ValidValue.go 2.67 KiB
package corestr

import (
	"regexp"
	"strings"

	"gitlab.com/evatix-go/core/constants"
	"gitlab.com/evatix-go/core/internal/strutilinternal"
)

type ValueValid struct {
	Value      string
	valueBytes *[]byte
	IsValid    bool
	Message    string
}

func InvalidValueValidNoMessage() *ValueValid {
	return InvalidValueValid(constants.EmptyString)
}

func InvalidValueValid(message string) *ValueValid {
	return &ValueValid{
		Value:   constants.EmptyString,
		IsValid: false,
		Message: message,
	}
}

func (receiver *ValueValid) ValueBytesOnce() []byte {
	return *receiver.ValueBytesOncePtr()
}

func (receiver *ValueValid) ValueBytesOncePtr() *[]byte {
	if receiver.valueBytes == nil {
		valueBytes := []byte(receiver.Value)

		receiver.valueBytes = &valueBytes
	}

	return receiver.valueBytes
}

func (receiver *ValueValid) IsEmpty() bool {
	return receiver.Value == ""
}

func (receiver *ValueValid) IsWhitespace() bool {
	return strutilinternal.IsEmptyOrWhitespace(receiver.Value)
}

func (receiver *ValueValid) Trim() string {
	return strings.TrimSpace(receiver.Value)
}

func (receiver *ValueValid) HasValidNonEmpty() bool {
	return receiver.IsValid && !receiver.IsEmpty()
}

func (receiver *ValueValid) HasValidNonWhitespace() bool {
	return receiver.IsValid && !receiver.IsWhitespace()
}

// HasSafeNonEmpty receiver.IsValid &&
//		!receiver.IsLeftEmpty() &&
//		!receiver.IsMiddleEmpty() &&
//		!receiver.IsRightEmpty()
func (receiver *ValueValid) HasSafeNonEmpty() bool {
	return receiver.IsValid &&
		!receiver.IsEmpty()
}

func (receiver *ValueValid) Is(val string) bool {
	return receiver.Value == val
}

// IsAnyOf if length of values are 0 then returns true
func (receiver *ValueValid) IsAnyOf(values ...string) bool {
	if len(values) == 0 {
		return true
	}

	for _, value := range values {
		if receiver.Value == value {
			return true
		}
	}

	return false
}

func (receiver *ValueValid) IsContains(val string) bool {
	return strings.Contains(receiver.Value, val)
}

// IsAnyContains if length of values are 0 then returns true
func (receiver *ValueValid) IsAnyContains(values ...string) bool {
	if len(values) == 0 {
		return true
	}

	for _, value := range values {
		if receiver.IsContains(value) {
			return true
		}
	}

	return false
}

func (receiver *ValueValid) IsEqualNonSensitive(val string) bool {
	return strings.EqualFold(receiver.Value, val)
}

func (receiver *ValueValid) IsRegexMatches(regexp *regexp.Regexp) bool {
	if regexp == nil {
		return false
	}

	return regexp.MatchString(receiver.Value)
}

func (receiver *ValueValid) Clone() *ValueValid {
	if receiver == nil {
		return nil
	}

	return &ValueValid{
		Value:   receiver.Value,
		IsValid: receiver.IsValid,
		Message: receiver.Message,
	}
}