package main import ( "bufio" "bytes" "encoding/json" "strconv" "strings" ) type TextFilter func(input string) (output string, err error) var TextFilters = map[string]TextFilter{ "upper-case": func(input string) (output string, err error) { return strings.ToUpper(input), nil }, "lower-case": func(input string) (output string, err error) { return strings.ToLower(input), nil }, "unquote": func(input string) (output string, err error) { return strconv.Unquote(input) }, "format-json": func(input string) (output string, err error) { var dst bytes.Buffer scnr := bufio.NewScanner(strings.NewReader(input)) for scnr.Scan() { line := scnr.Text() if err := json.Indent(&dst, []byte(line), "", " "); err == nil { dst.WriteString("\n") } else { return "", err } } return dst.String(), nil }, "lorem-ipsum": func(input string) (output string, err error) { return "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor " + "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud " + "exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure " + "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. " + "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt " + "mollit anim id est laborum.", nil }, }