]> Cypherpunks.ru repositories - goredo.git/blob - tai64n.go
Up to date installation instruction
[goredo.git] / tai64n.go
1 /*
2 goredo -- redo implementation on pure Go
3 Copyright (C) 2020 Sergey Matveev <stargrave@stargrave.org>
4
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation, version 3 of the License.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program.  If not, see <http://www.gnu.org/licenses/>.
16 */
17
18 package main
19
20 import (
21         "bufio"
22         "io"
23         "strings"
24         "time"
25
26         "go.cypherpunks.ru/tai64n"
27 )
28
29 func tai64nLocal(dst io.StringWriter, src io.Reader) error {
30         scanner := bufio.NewScanner(src)
31         var err error
32         var s string
33         var sep int
34         var t time.Time
35         for {
36                 if !scanner.Scan() {
37                         if err = scanner.Err(); err != nil {
38                                 return err
39                         }
40                         break
41                 }
42                 s = scanner.Text()
43
44                 if s[0] != '@' {
45                         dst.WriteString(s + "\n")
46                 }
47                 sep = strings.IndexByte(s, byte(' '))
48                 if sep == -1 {
49                         dst.WriteString(s + "\n")
50                 }
51                 t, err = tai64n.Decode(s[1:sep])
52                 if err != nil {
53                         return err
54                 }
55                 dst.WriteString(t.Format(tai64n.LocalFmt) + s[sep:] + "\n")
56         }
57         return nil
58 }