From 43a21ba929d63d4fdcdd0a3ac1f7c5bb6670743b Mon Sep 17 00:00:00 2001 From: "Jip J. Dekker" Date: Sun, 20 Oct 2013 15:46:34 +0200 Subject: [PATCH] Added code for New Entry! --- newEntry.go | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 newEntry.go diff --git a/newEntry.go b/newEntry.go new file mode 100644 index 0000000..427b820 --- /dev/null +++ b/newEntry.go @@ -0,0 +1,93 @@ +package main + +import ( + "bufio" + "fmt" + "os" + "strings" +) + +const ( + maxContent int = 10000 + maxSign int = 1000 +) + +func msgContent() (string, bool) { + var msg string + reader := bufio.NewReader(os.Stdin) + +S: + for { + switch line, err := reader.ReadString('\n'); { + case err != nil: + return msg, false + case strings.TrimSpace(line) == "Aldus ons bericht.": + msg += "Aldus ons bericht.\n\n" + break S + default: + msg += line + if len(msg) > maxContent { + fmt.Println("Uw bericht werd te lang en is om deze reden hier beƫindigd.") + break S + } + } + } + + return msg, true +} + +func msgSign() (string, bool) { + var sign string + var end int = -1 + reader := bufio.NewReader(os.Stdin) + +S: + for { + switch line, err := reader.ReadString('\n'); { + case err != nil: + return sign, false + case strings.TrimSpace(line) == "": + if end > 0 { + break S + } + sign += line + end++ + default: + sign += line + end = 0 + if len(sign) > maxSign { + fmt.Println("Uw bericht werd te lang en is om deze reden hier beƫindigd.") + break S + } + } + } + + return sign, true +} + +func writeToFile(content string) bool { + +} + +func makeEntry() bool { + clear() + + fmt.Printf("Schrijf hieronder uw bericht aan het nieuwe bestuur van Thalia.\nU kunt alle tekens binnen de unicode gebruiken, u kunt maximaal %d bytes gebruiken.\nU Schrijft per regel, dus nadat een regel getypt is, is deze definitief.\nSluit uw bericht af met een regel \"Aldus ons bericht.\", u kunt het bericht daarna nog persoonlijk ondertekenen.\n", maxContent) + var width, _ int = terminalSize() + fmt.Print(strings.Repeat("-", width-1) + "\n") + content, ok := msgContent() + if !ok { + return false + } + + fmt.Print("\n\nHieronder heeft u de kans om uw bericht persoonlijk te ondertekenen, sluit dit af met twee witregels/enters'.\n") + fmt.Print(strings.Repeat("-", width-1) + "\n") + sign, ok := msgSign() + if !ok { + return false + } + + ok = writeToFile(content + "\n\n" + sign) + + return true +}