func diffMaps(dq *diffQueue, w io.Writer, p types.Path, v1, v2 types.Map) { wroteHeader := false added, removed, modified := v2.Diff(v1) for _, k := range added { wroteHeader = writeHeader(w, wroteHeader, p) line(w, addPrefix, k, v2.Get(k)) } for _, k := range removed { wroteHeader = writeHeader(w, wroteHeader, p) line(w, subPrefix, k, v1.Get(k)) } for _, k := range modified { c1, c2 := v1.Get(k), v2.Get(k) if canCompare(c1, c2) { buf := bytes.NewBuffer(nil) d.Exp.NoError(types.WriteEncodedValueWithTags(buf, k)) p1 := p.AddField(buf.String()) dq.PushBack(diffInfo{path: p1, key: k, v1: c1, v2: c2}) } else { wroteHeader = writeHeader(w, wroteHeader, p) line(w, subPrefix, k, v1.Get(k)) line(w, addPrefix, k, v2.Get(k)) } } writeFooter(w, wroteHeader) }
func main() { flag.Usage = func() { fmt.Fprintln(os.Stderr, "Shows a serialization of a Noms object\n") fmt.Fprintln(os.Stderr, "Usage: noms show <object>\n") flag.PrintDefaults() fmt.Fprintf(os.Stderr, "\nSee \"Spelling Objects\" at https://github.com/attic-labs/noms/blob/master/doc/spelling.md for details on the object argument.\n\n") } flag.Parse() if *showHelp { flag.Usage() return } if len(flag.Args()) != 1 { util.CheckError(errors.New("expected exactly one argument")) } database, value, err := spec.GetPath(flag.Arg(0)) util.CheckError(err) waitChan := outputpager.PageOutput(!*outputpager.NoPager) types.WriteEncodedValueWithTags(os.Stdout, value) fmt.Fprintf(os.Stdout, "\n") database.Close() if waitChan != nil { os.Stdout.Close() <-waitChan } }
func writeCommitLines(node LogNode, maxLines, lineno int, w io.Writer) (lineCnt int, err error) { mlw := &maxLineWriter{numLines: lineno, maxLines: maxLines, node: node, dest: w, needsPrefix: true} err = types.WriteEncodedValueWithTags(mlw, node.commit.Get(datas.ValueField)) if err != nil { mlw.forceWrite([]byte("...")) mlw.numLines++ err = nil } mlw.forceWrite([]byte("\n")) if !node.lastCommit { mlw.forceWrite([]byte("\n")) } return mlw.numLines, err }
func writeEncodedValueWithTags(w io.Writer, v types.Value) { d.PanicIfError(types.WriteEncodedValueWithTags(w, v)) }