(nodeStart xml.StartElement, parent *[]*Node)
| 287 | } |
| 288 | |
| 289 | func (d *Decoder) decNode(nodeStart xml.StartElement, parent *[]*Node) error { |
| 290 | |
| 291 | // Get node attributes and appends the new node to its parent |
| 292 | n := &Node{} |
| 293 | n.Id = findAttrib(nodeStart, "id").Value |
| 294 | n.Name = findAttrib(nodeStart, "name").Value |
| 295 | n.Sid = findAttrib(nodeStart, "name").Value |
| 296 | n.Type = findAttrib(nodeStart, "type").Value |
| 297 | n.Node = make([]*Node, 0) |
| 298 | *parent = append(*parent, n) |
| 299 | |
| 300 | // Decodes node children |
| 301 | for { |
| 302 | // Get next child element |
| 303 | child, data, err := d.decNextChild(nodeStart) |
| 304 | if err != nil || child.Name.Local == "" { |
| 305 | return err |
| 306 | } |
| 307 | if child.Name.Local == "matrix" { |
| 308 | err = d.decMatrix(data, n) |
| 309 | if err != nil { |
| 310 | return err |
| 311 | } |
| 312 | continue |
| 313 | } |
| 314 | if child.Name.Local == "rotate" { |
| 315 | err = d.decRotate(data, n) |
| 316 | if err != nil { |
| 317 | return err |
| 318 | } |
| 319 | continue |
| 320 | } |
| 321 | if child.Name.Local == "scale" { |
| 322 | err = d.decScale(data, n) |
| 323 | if err != nil { |
| 324 | return err |
| 325 | } |
| 326 | continue |
| 327 | } |
| 328 | if child.Name.Local == "translate" { |
| 329 | err = d.decTranslate(data, n) |
| 330 | if err != nil { |
| 331 | return err |
| 332 | } |
| 333 | continue |
| 334 | } |
| 335 | if child.Name.Local == "instance_geometry" { |
| 336 | err = d.decInstanceGeometry(child, n) |
| 337 | if err != nil { |
| 338 | return err |
| 339 | } |
| 340 | continue |
| 341 | } |
| 342 | // Decodes child node recursively |
| 343 | if child.Name.Local == "node" { |
| 344 | err = d.decNode(child, &n.Node) |
| 345 | if err != nil { |
| 346 | return err |
no test coverage detected