feat: acronym function added

This commit is contained in:
Roshan Ranabhat 2023-01-20 11:02:29 +05:45
parent 39a0bb1486
commit 0127cca768
3 changed files with 28 additions and 0 deletions

View File

@ -2,6 +2,7 @@ package main
import (
"fmt"
"github.com/gobeam/stringy"
)
@ -79,4 +80,8 @@ func main() {
pun := stringy.New("this really is a cliff")
fmt.Println(pun.Suffix("hanger")) // this really is a cliffhanger
acronym := stringy.New("Laugh Out Loud")
// fmt.Println(acronym.Acronym().Get()) // LOL
fmt.Println(acronym.Acronym().ToLower()) // lol
}

View File

@ -18,6 +18,7 @@ type input struct {
// StringManipulation is an interface that holds all abstract methods to manipulate strings
type StringManipulation interface {
Acronym() StringManipulation
Between(start, end string) StringManipulation
Boolean() bool
CamelCase(rule ...string) string
@ -50,6 +51,20 @@ func New(val string) StringManipulation {
return &input{Input: val}
}
// Acronym func returns acronym of input string.
// You can chain to upper which with make result all upercase or ToLower
// which will make result all lower case or Get which will return result as it is
func (i *input) Acronym() StringManipulation {
input := getInput(*i)
words := strings.Fields(input)
var acronym string
for _, word := range words {
acronym += string(word[0])
}
i.Result = acronym
return i
}
// Between takes two string params start and end which and returns
// value which is in middle of start and end part of input. You can
// chain to upper which with make result all upercase or ToLower which

View File

@ -6,6 +6,14 @@ import (
var sm StringManipulation = New("This is example.")
func TestInput_Acronym(t *testing.T) {
acronym := New("Laugh Out Loud")
val := acronym.Acronym().Get()
if val != "LOL" {
t.Errorf("Expected: %s but got: %s", "IS", val)
}
}
func TestInput_Between(t *testing.T) {
val := sm.Between("This", "example").ToUpper()
if val != "IS" {