simple.go 897 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. package log_temperature
  2. import (
  3. "bufio"
  4. "fmt"
  5. "strconv"
  6. "strings"
  7. )
  8. type simpleParser struct {
  9. reader *bufio.Reader
  10. }
  11. func NewSimpleParser(reader *bufio.Reader) Parser {
  12. return &simpleParser{reader: reader}
  13. }
  14. // Measure returns the temperature. Null if it can't
  15. func (sp simpleParser) Measure() (*Measurement, error) {
  16. text, err := sp.reader.ReadString('\n')
  17. if err != nil {
  18. return nil, err
  19. }
  20. fields := strings.Fields(text)
  21. for i := 0; i < len(fields); i++ {
  22. fields[i] = strings.ToLower(fields[i])
  23. }
  24. if len(fields) == 3 {
  25. if strings.Compare(fields[0], "temperature:") == 0 {
  26. temp, _ := strconv.ParseFloat(fields[1], 64)
  27. unit := fields[2]
  28. if strings.Compare(unit, "f") == 0 {
  29. temp = (temp - 32) * (5.0 / 9.0)
  30. }
  31. fmt.Println("temp is " + strconv.FormatFloat(temp, 'f', 6, 64))
  32. return &Measurement{ID: 0, Temperature: temp}, nil
  33. }
  34. }
  35. return nil, nil
  36. }