github.com/coveo/gotemplate@v2.7.7+incompatible/utils/lorem.go (about)

     1  package utils
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  
     7  	goLorem "github.com/drhodes/goLorem"
     8  )
     9  
    10  // LoremKind represents the various Lorem Ipsum generator type
    11  type LoremKind int
    12  
    13  // Constant used to describe the different kind of lorem generator
    14  const (
    15  	_ LoremKind = iota
    16  	Word
    17  	Sentence
    18  	Paragraph
    19  	Host
    20  	EMail
    21  	URL
    22  )
    23  
    24  // GetLoremKind converts a name to LoremKind
    25  func GetLoremKind(name string) (kind LoremKind, err error) {
    26  	switch strings.ToLower(name) {
    27  	case "1", "word":
    28  		kind = Word
    29  	case "2", "", "words", "sentence":
    30  		kind = Sentence
    31  	case "3", "para", "paragraph", "sentences":
    32  		kind = Paragraph
    33  	case "4", "host":
    34  		kind = Host
    35  	case "5", "email":
    36  		kind = EMail
    37  	case "6", "url":
    38  		kind = URL
    39  	default:
    40  		err = fmt.Errorf("Undefined Lorem kind %s", name)
    41  	}
    42  	return
    43  }
    44  
    45  // Lorem generates random string using lorem ipsum generator
    46  func Lorem(kind LoremKind, params ...int) (string, error) {
    47  	min := 3
    48  	max := 10
    49  	if len(params) > 0 {
    50  		min = params[0]
    51  	}
    52  	if len(params) > 1 {
    53  		max = params[1]
    54  	}
    55  	switch kind {
    56  	case Sentence:
    57  		return goLorem.Sentence(min, max), nil
    58  	case Paragraph:
    59  		return goLorem.Paragraph(min, max), nil
    60  	case Word:
    61  		return goLorem.Word(min, max), nil
    62  	case Host:
    63  		return goLorem.Host(), nil
    64  	case EMail:
    65  		return goLorem.Email(), nil
    66  	case URL:
    67  		return goLorem.Url(), nil
    68  	default:
    69  		return "", fmt.Errorf("Unknown lorem type %v", kind)
    70  	}
    71  }