1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 2*ba677afaSXin Li 3*ba677afaSXin Lipackage parser2v3 4*ba677afaSXin Li 5*ba677afaSXin Liimport ( 6*ba677afaSXin Li "fmt" 7*ba677afaSXin Li) 8*ba677afaSXin Li 9*ba677afaSXin Lifunc (parser *tvParser2_3) parsePairForAnnotation2_3(tag string, value string) error { 10*ba677afaSXin Li if parser.ann == nil { 11*ba677afaSXin Li return fmt.Errorf("no annotation struct created in parser ann pointer") 12*ba677afaSXin Li } 13*ba677afaSXin Li 14*ba677afaSXin Li switch tag { 15*ba677afaSXin Li case "Annotator": 16*ba677afaSXin Li subkey, subvalue, err := extractSubs(value) 17*ba677afaSXin Li if err != nil { 18*ba677afaSXin Li return err 19*ba677afaSXin Li } 20*ba677afaSXin Li if subkey == "Person" || subkey == "Organization" || subkey == "Tool" { 21*ba677afaSXin Li parser.ann.Annotator.AnnotatorType = subkey 22*ba677afaSXin Li parser.ann.Annotator.Annotator = subvalue 23*ba677afaSXin Li return nil 24*ba677afaSXin Li } 25*ba677afaSXin Li return fmt.Errorf("unrecognized Annotator type %v", subkey) 26*ba677afaSXin Li case "AnnotationDate": 27*ba677afaSXin Li parser.ann.AnnotationDate = value 28*ba677afaSXin Li case "AnnotationType": 29*ba677afaSXin Li parser.ann.AnnotationType = value 30*ba677afaSXin Li case "SPDXREF": 31*ba677afaSXin Li deID, err := extractDocElementID(value) 32*ba677afaSXin Li if err != nil { 33*ba677afaSXin Li return err 34*ba677afaSXin Li } 35*ba677afaSXin Li parser.ann.AnnotationSPDXIdentifier = deID 36*ba677afaSXin Li case "AnnotationComment": 37*ba677afaSXin Li parser.ann.AnnotationComment = value 38*ba677afaSXin Li default: 39*ba677afaSXin Li return fmt.Errorf("received unknown tag %v in Annotation section", tag) 40*ba677afaSXin Li } 41*ba677afaSXin Li 42*ba677afaSXin Li return nil 43*ba677afaSXin Li} 44