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

StartEndString.go

StartEndString.go 1.59 KiB
package corerange

import (
	"strings"

	"gitlab.com/evatix-go/core/constants"
	"gitlab.com/evatix-go/core/coreindexes"
)

type StartEndString struct {
	*BaseRange
	Start, End string
}

func NewStartEndString(raw, sep string) *StartEndString {
	ranges := strings.Split(raw, sep)
	length := len(ranges)
	hasStart := length >= 1
	hasEnd := length >= 2
	isValid := false
	isValid = isValid &&
		length == 2 &&
		hasStart &&
		hasEnd

	var start, end string

	if hasStart {
		start = ranges[coreindexes.First]
	}

	if hasEnd {
		end = ranges[coreindexes.Second]
	}

	return &StartEndString{
		BaseRange: &BaseRange{
			RawInput:  raw,
			Separator: sep,
			IsValid:   isValid,
			HasStart:  hasStart,
			HasEnd:    hasEnd,
		},
		Start: start,
		End:   end,
	}
}

// NewStartEndStringUsingLines using first, last index
func NewStartEndStringUsingLines(lines []string) *StartEndString {
	length := len(lines)
	hasStart := length >= 1
	hasEnd := length >= 2
	isValid := false
	isValid = isValid &&
		length == 2 &&
		hasStart &&
		hasEnd

	var start, end string

	if hasStart {
		start = lines[coreindexes.First]
	}

	if hasEnd {
		end = lines[length-1]
	}

	return &StartEndString{
		BaseRange: &BaseRange{
			RawInput:  constants.EmptyString,
			Separator: constants.EmptyString,
			IsValid:   isValid,
			HasStart:  hasStart,
			HasEnd:    hasEnd,
		},
		Start: start,
		End:   end,
	}
}

func (r *StartEndString) CreateRangeString() *RangeString {
	return &RangeString{
		StartEndString: NewStartEndString(
			r.RawInput,
			r.Separator),
	}
}

func (r *StartEndString) String() string {
	return r.BaseRange.String(r.Start, r.End)
}