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