From 3413de82e4282b38ed73a5cc86b5f09c3315c2df Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Sun, 25 Aug 2024 21:51:15 +0200 Subject: [PATCH] init --- README.md | 29 ++++++++++++++++++++++++ go.mod | 5 +++++ go.sum | 2 ++ main.go | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 103 insertions(+) create mode 100644 README.md create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go diff --git a/README.md b/README.md new file mode 100644 index 0000000..84d4e44 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +# Lorem + +Lorem ipsum generator. + +## Usage + +Generates 5 words: + +``` +lorem -w 5 +``` + +Generates 4 paragraphs: + +``` +lorem -p 4 +``` + +Generates 3 sentences: + +``` +lorem -s 3 +``` + +## Build + +``` +go build +``` diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..86934a7 --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module gitnet.fr/deblan/lorem + +go 1.23.0 + +require github.com/go-loremipsum/loremipsum v1.1.3 // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..3aacb84 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/go-loremipsum/loremipsum v1.1.3 h1:ZRhA0ZmJ49lGe5HhWeMONr+iGftWDsHfrYBl5ktDXso= +github.com/go-loremipsum/loremipsum v1.1.3/go.mod h1:OJQjXdvwlG9hsyhmMQoT4HOm4DG4l62CYywebw0XBoo= diff --git a/main.go b/main.go new file mode 100644 index 0000000..c2950e9 --- /dev/null +++ b/main.go @@ -0,0 +1,67 @@ +package main + +import ( + "flag" + "fmt" + "os" + "strings" + + "github.com/go-loremipsum/loremipsum" +) + +func RandomWords(generator *loremipsum.LoremIpsum, count int) string { + values := []string{} + + for i := 0; i < count; i++ { + values = append(values, generator.Word()) + } + + return strings.Join(values, " ") +} + +func RemoveFirstItem(value, separator, newSeparator string) string { + datas := strings.Split(value, separator) + + return strings.Join(datas[1:], newSeparator) +} + +func usage(cmd string) string { + return `Usage of ` + cmd + `: + -h Show help + -p int + Nomber of paragraphs + -s int + Nomber of sentences + -w int + Nomber of words +` +} + +func main() { + var value string + + wordFlag := flag.Int("w", 0, "Nomber of words") + paragraphFlag := flag.Int("p", 0, "Nomber of paragraphs") + sentenceFlag := flag.Int("s", 0, "Nomber of sentences") + helpFlag := flag.Bool("h", false, "Show help") + flag.Parse() + generator := loremipsum.New() + + if *helpFlag { + fmt.Print(usage(os.Args[0])) + os.Exit(0) + } + + if *wordFlag > 0 { + value = RandomWords(generator, *wordFlag) + } else if *paragraphFlag > 0 { + value = RemoveFirstItem(generator.Paragraphs(*paragraphFlag+1), "\n", "\n\n") + } else if *sentenceFlag > 0 { + value = RemoveFirstItem(generator.Sentences(*sentenceFlag+1), ". ", ". ") + } else { + fmt.Fprint(os.Stderr, usage(os.Args[0])) + os.Exit(1) + } + + fmt.Println(value) +}