aboutsummaryrefslogtreecommitdiff
path: root/tvloader/parser2v1/parser.go
diff options
context:
space:
mode:
Diffstat (limited to 'tvloader/parser2v1/parser.go')
-rw-r--r--tvloader/parser2v1/parser.go42
1 files changed, 37 insertions, 5 deletions
diff --git a/tvloader/parser2v1/parser.go b/tvloader/parser2v1/parser.go
index f4a5ae1..70f4819 100644
--- a/tvloader/parser2v1/parser.go
+++ b/tvloader/parser2v1/parser.go
@@ -59,12 +59,44 @@ func (parser *tvParser2_1) parsePairFromStart2_1(tag string, value string) error
// create an SPDX Document data struct if we don't have one already
if parser.doc == nil {
- parser.doc = &spdx.Document2_1{}
+ parser.doc = &spdx.Document2_1{
+ ExternalDocumentReferences: []spdx.ExternalDocumentRef2_1{},
+ }
}
- // move to Creation Info parser state
- parser.st = psCreationInfo2_1
+ switch tag {
+ case "SPDXVersion":
+ parser.doc.SPDXVersion = value
+ case "DataLicense":
+ parser.doc.DataLicense = value
+ case "SPDXID":
+ eID, err := extractElementID(value)
+ if err != nil {
+ return err
+ }
+ parser.doc.SPDXIdentifier = eID
+ case "DocumentName":
+ parser.doc.DocumentName = value
+ case "DocumentNamespace":
+ parser.doc.DocumentNamespace = value
+ case "ExternalDocumentRef":
+ documentRefID, uri, alg, checksum, err := extractExternalDocumentReference(value)
+ if err != nil {
+ return err
+ }
+ edr := spdx.ExternalDocumentRef2_1{
+ DocumentRefID: documentRefID,
+ URI: uri,
+ Checksum: spdx.Checksum{Algorithm: spdx.ChecksumAlgorithm(alg), Value: checksum},
+ }
+ parser.doc.ExternalDocumentReferences = append(parser.doc.ExternalDocumentReferences, edr)
+ case "DocumentComment":
+ parser.doc.DocumentComment = value
+ default:
+ // move to Creation Info parser state
+ parser.st = psCreationInfo2_1
+ return parser.parsePairFromCreationInfo2_1(tag, value)
+ }
- // and ask Creation Info subfunc to parse
- return parser.parsePairFromCreationInfo2_1(tag, value)
+ return nil
}