]> Cypherpunks.ru repositories - gotai64n.git/blob - cmd/tai64nlocal/main.go
cmd/tai64nlocal
[gotai64n.git] / cmd / tai64nlocal / main.go
1 /*
2 go.cypherpunks.ru/tai64n -- Pure Go TAI64N implementation
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         "log"
23         "os"
24         "strings"
25         "time"
26
27         "go.cypherpunks.ru/tai64n"
28 )
29
30 func main() {
31         log.SetFlags(0)
32         scanner := bufio.NewScanner(os.Stdin)
33         var err error
34         var s string
35         var sep int
36         var t time.Time
37         for {
38                 if !scanner.Scan() {
39                         if err = scanner.Err(); err != nil {
40                                 log.Fatalln(err)
41                         }
42                         break
43                 }
44                 s = scanner.Text()
45                 if s[0] != '@' {
46                         os.Stdout.WriteString(s + "\n")
47                 }
48                 sep = strings.IndexByte(s, byte(' '))
49                 if sep == -1 {
50                         os.Stdout.WriteString(s + "\n")
51                 }
52                 t, err = tai64n.Decode(s[1:sep])
53                 if err != nil {
54                         log.Fatalln(err)
55                 }
56                 os.Stdout.WriteString(t.Format(tai64n.LocalFmt) + s[sep:] + "\n")
57         }
58 }