1package fake
2
3import (
4	"strings"
5)
6
7// Character generates random character in the given language
8func Character() string {
9	return lookup(lang, "characters", true)
10}
11
12// CharactersN generates n random characters in the given language
13func CharactersN(n int) string {
14	var chars []string
15	for i := 0; i < n; i++ {
16		chars = append(chars, Character())
17	}
18	return strings.Join(chars, "")
19}
20
21// Characters generates from 1 to 5 characters in the given language
22func Characters() string {
23	return CharactersN(r.Intn(5) + 1)
24}
25
26// Word generates random word
27func Word() string {
28	return lookup(lang, "words", true)
29}
30
31// WordsN generates n random words
32func WordsN(n int) string {
33	words := make([]string, n)
34	for i := 0; i < n; i++ {
35		words[i] = Word()
36	}
37	return strings.Join(words, " ")
38}
39
40// Words generates from 1 to 5 random words
41func Words() string {
42	return WordsN(r.Intn(5) + 1)
43}
44
45// Title generates from 2 to 5 titleized words
46func Title() string {
47	return strings.ToTitle(WordsN(2 + r.Intn(4)))
48}
49
50// Sentence generates random sentence
51func Sentence() string {
52	var words []string
53	for i := 0; i < 3+r.Intn(12); i++ {
54		word := Word()
55		if r.Intn(5) == 0 {
56			word += ","
57		}
58		words = append(words, Word())
59	}
60
61	sentence := strings.Join(words, " ")
62
63	if r.Intn(8) == 0 {
64		sentence += "!"
65	} else {
66		sentence += "."
67	}
68
69	return sentence
70}
71
72// SentencesN generates n random sentences
73func SentencesN(n int) string {
74	sentences := make([]string, n)
75	for i := 0; i < n; i++ {
76		sentences[i] = Sentence()
77	}
78	return strings.Join(sentences, " ")
79}
80
81// Sentences generates from 1 to 5 random sentences
82func Sentences() string {
83	return SentencesN(r.Intn(5) + 1)
84}
85
86// Paragraph generates paragraph
87func Paragraph() string {
88	return SentencesN(r.Intn(10) + 1)
89}
90
91// ParagraphsN generates n paragraphs
92func ParagraphsN(n int) string {
93	var paragraphs []string
94	for i := 0; i < n; i++ {
95		paragraphs = append(paragraphs, Paragraph())
96	}
97	return strings.Join(paragraphs, "\t")
98}
99
100// Paragraphs generates from 1 to 5 paragraphs
101func Paragraphs() string {
102	return ParagraphsN(r.Intn(5) + 1)
103}
104