1// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 2 3package parser2v3 4 5import ( 6 "fmt" 7 8 "github.com/spdx/tools-golang/spdx/v2_3" 9) 10 11func (parser *tvParser2_3) parsePairFromReview2_3(tag string, value string) error { 12 switch tag { 13 // tag for creating new review section 14 case "Reviewer": 15 parser.rev = &v2_3.Review{} 16 parser.doc.Reviews = append(parser.doc.Reviews, parser.rev) 17 subkey, subvalue, err := extractSubs(value) 18 if err != nil { 19 return err 20 } 21 switch subkey { 22 case "Person": 23 parser.rev.Reviewer = subvalue 24 parser.rev.ReviewerType = "Person" 25 case "Organization": 26 parser.rev.Reviewer = subvalue 27 parser.rev.ReviewerType = "Organization" 28 case "Tool": 29 parser.rev.Reviewer = subvalue 30 parser.rev.ReviewerType = "Tool" 31 default: 32 return fmt.Errorf("unrecognized Reviewer type %v", subkey) 33 } 34 case "ReviewDate": 35 parser.rev.ReviewDate = value 36 case "ReviewComment": 37 parser.rev.ReviewComment = value 38 // for relationship tags, pass along but don't change state 39 case "Relationship": 40 parser.rln = &v2_3.Relationship{} 41 parser.doc.Relationships = append(parser.doc.Relationships, parser.rln) 42 return parser.parsePairForRelationship2_3(tag, value) 43 case "RelationshipComment": 44 return parser.parsePairForRelationship2_3(tag, value) 45 // for annotation tags, pass along but don't change state 46 case "Annotator": 47 parser.ann = &v2_3.Annotation{} 48 parser.doc.Annotations = append(parser.doc.Annotations, parser.ann) 49 return parser.parsePairForAnnotation2_3(tag, value) 50 case "AnnotationDate": 51 return parser.parsePairForAnnotation2_3(tag, value) 52 case "AnnotationType": 53 return parser.parsePairForAnnotation2_3(tag, value) 54 case "SPDXREF": 55 return parser.parsePairForAnnotation2_3(tag, value) 56 case "AnnotationComment": 57 return parser.parsePairForAnnotation2_3(tag, value) 58 default: 59 return fmt.Errorf("received unknown tag %v in Review section", tag) 60 } 61 62 return nil 63} 64