func()

in pkg/cloud/rgraph/algo/graphviz/graphviz.go [96:139]


func (n *viznode) String() string {
	type line struct {
		indent int
		s      string
	}

	var lines []line

	lines = append(lines, line{1, fmt.Sprintf("\"%s\" [label=<", n.name)})
	lines = append(lines, line{2, "<table border=\"0\">"})
	lines = append(lines, line{3, "<tr><td colspan=\"2\"><font point-size=\"16\">\\N</font></td></tr>"})
	lines = append(lines, line{3, "<tr><td colspan=\"2\">---</td></tr>"})

	var keys []string
	for k := range n.kv {
		keys = append(keys, k)
	}
	sort.Strings(keys)
	for _, k := range keys {
		lines = append(lines, line{3, fmt.Sprintf("<tr><td>%s</td><td align=\"left\">%v</td></tr>", k, n.kv[k])})
	}
	lines = append(lines, line{2, "</table>"})

	var attribsStr string
	for _, at := range []struct {
		key string
		val *string
	}{
		{"fillcolor", &n.fillcolor},
		{"shape", &n.shape},
		{"style", &n.style},
	} {
		if *at.val != "" {
			attribsStr += fmt.Sprintf(`,%s=%s`, at.key, *at.val)
		}
	}
	lines = append(lines, line{1, fmt.Sprintf(">%s]", attribsStr)})

	var out string
	for _, l := range lines {
		out += n.indent(l.indent) + l.s + "\n"
	}
	return out
}