| 256 | } |
| 257 | |
| 258 | func (builder *TreeJSONBuilder) AddNode(node *Node) error { |
| 259 | if node.Name <= builder.lastName { |
| 260 | return fmt.Errorf("node %q, last %q: %w", node.Name, builder.lastName, ErrTreeNotOrdered) |
| 261 | } |
| 262 | if builder.lastName != "" { |
| 263 | _ = builder.buf.WriteByte(',') |
| 264 | } |
| 265 | builder.lastName = node.Name |
| 266 | |
| 267 | val, err := json.Marshal(node) |
| 268 | if err != nil { |
| 269 | return err |
| 270 | } |
| 271 | _, _ = builder.buf.Write(val) |
| 272 | builder.countNodes++ |
| 273 | return nil |
| 274 | } |
| 275 | |
| 276 | func (builder *TreeJSONBuilder) Finalize() ([]byte, error) { |
| 277 | // append a newline so that the data is always consistent (json.Encoder |