c40779224f
Fixes #52
32 lines
635 B
Go
32 lines
635 B
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
)
|
|
|
|
// StringService provides operations on strings.
|
|
type StringService interface {
|
|
Uppercase(string) (string, error)
|
|
Count(string) int
|
|
}
|
|
|
|
type stringService struct{}
|
|
|
|
func (stringService) Uppercase(s string) (string, error) {
|
|
if s == "" {
|
|
return "", ErrEmpty
|
|
}
|
|
return strings.ToUpper(s), nil
|
|
}
|
|
|
|
func (stringService) Count(s string) int {
|
|
return len(s)
|
|
}
|
|
|
|
// ErrEmpty is returned when an input string is empty.
|
|
var ErrEmpty = errors.New("empty string")
|
|
|
|
// ServiceMiddleware is a chainable behavior modifier for StringService.
|
|
type ServiceMiddleware func(StringService) StringService
|