Goencoding.go -rw-r--r-- 620 B
1package main
2
3import (
4 "bytes"
5 "io"
6
7 "gonum.org/v1/gonum/graph"
8 "gonum.org/v1/gonum/graph/encoding/dot"
9)
10
11type Encoding string
12
13func (e Encoding) String() string {
14 return string(e)
15}
16
17const (
18 Json = Encoding("Json")
19 Dot = Encoding("Dot")
20)
21
22type Encoder interface {
23 Encode(io.Writer) error
24}
25
26type dotEncoder struct {
27 graph graph.Graph
28}
29
30func (d dotEncoder) Encode(w io.Writer) error {
31 raw, err := dot.Marshal(d.graph, "", "", "")
32 if err != nil {
33 return err
34 }
35 _, err = bytes.NewBuffer(raw).WriteTo(w)
36 return err
37}
38
39func NewEncoder(enc Encoding, g graph.Graph) Encoder {
40 return dotEncoder{graph: g}
41}