xref: /aosp_15_r20/external/spdx-tools/tvloader/parser2v1/parse_other_license.go (revision ba677afa8f67bb56cbc794f4d0e378e0da058e16)
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) parsePairFromOtherLicense2_1(tag string, value string) error {
12*ba677afaSXin Li	switch tag {
13*ba677afaSXin Li	// tag for creating new other license section
14*ba677afaSXin Li	case "LicenseID":
15*ba677afaSXin Li		parser.otherLic = &v2_1.OtherLicense{}
16*ba677afaSXin Li		parser.doc.OtherLicenses = append(parser.doc.OtherLicenses, parser.otherLic)
17*ba677afaSXin Li		parser.otherLic.LicenseIdentifier = value
18*ba677afaSXin Li	case "ExtractedText":
19*ba677afaSXin Li		parser.otherLic.ExtractedText = value
20*ba677afaSXin Li	case "LicenseName":
21*ba677afaSXin Li		parser.otherLic.LicenseName = value
22*ba677afaSXin Li	case "LicenseCrossReference":
23*ba677afaSXin Li		parser.otherLic.LicenseCrossReferences = append(parser.otherLic.LicenseCrossReferences, value)
24*ba677afaSXin Li	case "LicenseComment":
25*ba677afaSXin Li		parser.otherLic.LicenseComment = value
26*ba677afaSXin Li	// for relationship tags, pass along but don't change state
27*ba677afaSXin Li	case "Relationship":
28*ba677afaSXin Li		parser.rln = &v2_1.Relationship{}
29*ba677afaSXin Li		parser.doc.Relationships = append(parser.doc.Relationships, parser.rln)
30*ba677afaSXin Li		return parser.parsePairForRelationship2_1(tag, value)
31*ba677afaSXin Li	case "RelationshipComment":
32*ba677afaSXin Li		return parser.parsePairForRelationship2_1(tag, value)
33*ba677afaSXin Li	// for annotation tags, pass along but don't change state
34*ba677afaSXin Li	case "Annotator":
35*ba677afaSXin Li		parser.ann = &v2_1.Annotation{}
36*ba677afaSXin Li		parser.doc.Annotations = append(parser.doc.Annotations, parser.ann)
37*ba677afaSXin Li		return parser.parsePairForAnnotation2_1(tag, value)
38*ba677afaSXin Li	case "AnnotationDate":
39*ba677afaSXin Li		return parser.parsePairForAnnotation2_1(tag, value)
40*ba677afaSXin Li	case "AnnotationType":
41*ba677afaSXin Li		return parser.parsePairForAnnotation2_1(tag, value)
42*ba677afaSXin Li	case "SPDXREF":
43*ba677afaSXin Li		return parser.parsePairForAnnotation2_1(tag, value)
44*ba677afaSXin Li	case "AnnotationComment":
45*ba677afaSXin Li		return parser.parsePairForAnnotation2_1(tag, value)
46*ba677afaSXin Li	// tag for going on to review section (DEPRECATED)
47*ba677afaSXin Li	case "Reviewer":
48*ba677afaSXin Li		parser.st = psReview2_1
49*ba677afaSXin Li		return parser.parsePairFromReview2_1(tag, value)
50*ba677afaSXin Li	default:
51*ba677afaSXin Li		return fmt.Errorf("received unknown tag %v in OtherLicense section", tag)
52*ba677afaSXin Li	}
53*ba677afaSXin Li
54*ba677afaSXin Li	return nil
55*ba677afaSXin Li}
56