package serial

import (
	"strings"
)

// An interface for any objects that has string presentation.
type String interface {
	String() string
}

type StringLiteral string

func NewStringLiteral(str String) StringLiteral {
	return StringLiteral(str.String())
}

func (this StringLiteral) Contains(str String) bool {
	return strings.Contains(this.String(), str.String())
}

func (this StringLiteral) String() string {
	return string(this)
}

func (this StringLiteral) ToLower() StringLiteral {
	return StringLiteral(strings.ToLower(string(this)))
}

func (this StringLiteral) ToUpper() StringLiteral {
	return StringLiteral(strings.ToUpper(string(this)))
}

func (this StringLiteral) TrimSpace() StringLiteral {
	return StringLiteral(strings.TrimSpace(string(this)))
}