From ec52cea57b5d1defefa9b104df71f991eb01820c Mon Sep 17 00:00:00 2001 From: Dimas Ragil Triatmaja Date: Tue, 24 Mar 2020 13:40:02 +0700 Subject: [PATCH] Add parse string function --- parse.go | 16 ++++++++++++++++ parse_test.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/parse.go b/parse.go index 72b9f77..dba4abb 100644 --- a/parse.go +++ b/parse.go @@ -32,3 +32,19 @@ func Stringify(str interface{}) string { } return string(out) } + +// ParseStringNil function to check string if empty return nil +func ParseStringNil(s string) *string { + if len(s) > 0 { + return &s + } + return nil +} + +// ParsePtrString function check pointer string, if nil return empty string +func ParsePtrString(s *string) string { + if s == nil { + return "" + } + return *s +} diff --git a/parse_test.go b/parse_test.go index 50c13c4..efab457 100644 --- a/parse_test.go +++ b/parse_test.go @@ -60,3 +60,34 @@ func (p *ParseSuite) Test_Stringify_Failed_Marshal() { assert.NotEmpty(p.T(), result) } + +func (p *ParseSuite) Test_ParseStringNil() { + s := "test" + + result := cookbook.ParseStringNil(s) + + assert.NotNil(p.T(), result) +} + +func (p *ParseSuite) Test_ParseStringNil_Empty() { + s := "" + + result := cookbook.ParseStringNil(s) + + assert.Nil(p.T(), result) +} + +func (p *ParseSuite) Test_ParsePtrString() { + s := "test" + + result := cookbook.ParsePtrString(&s) + + assert.NotEmpty(p.T(), result) + assert.Equal(p.T(), s, result) +} + +func (p *ParseSuite) Test_ParsePtrString_Nil() { + result := cookbook.ParsePtrString(nil) + + assert.Empty(p.T(), result) +}