diff options
author | Steve Winslow <steve@swinslow.net> | 2020-06-14 14:54:46 -0400 |
---|---|---|
committer | Steve Winslow <steve@swinslow.net> | 2020-06-14 14:54:46 -0400 |
commit | 2d11b095ab5ab903b3c5712e69a139abe1cdc69e (patch) | |
tree | 6563302986dd904fa5433dfd4a05fd3a7c7cfb21 /tvloader/parser2v2/parse_relationship.go | |
parent | 5f6fa11c4a328ae3689d71ae13d245df36525bd1 (diff) | |
download | spdx-tools-2d11b095ab5ab903b3c5712e69a139abe1cdc69e.tar.gz |
Add tvloader and tests for 2.2
Signed-off-by: Steve Winslow <steve@swinslow.net>
Diffstat (limited to 'tvloader/parser2v2/parse_relationship.go')
-rw-r--r-- | tvloader/parser2v2/parse_relationship.go | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/tvloader/parser2v2/parse_relationship.go b/tvloader/parser2v2/parse_relationship.go new file mode 100644 index 0000000..28e5b72 --- /dev/null +++ b/tvloader/parser2v2/parse_relationship.go @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later + +package parser2v2 + +import ( + "fmt" + "strings" +) + +func (parser *tvParser2_2) parsePairForRelationship2_2(tag string, value string) error { + if parser.rln == nil { + return fmt.Errorf("no relationship struct created in parser rln pointer") + } + + if tag == "Relationship" { + // parse the value to see if it's a valid relationship format + sp := strings.SplitN(value, " ", -1) + + // filter out any purely-whitespace items + var rp []string + for _, v := range sp { + v = strings.TrimSpace(v) + if v != "" { + rp = append(rp, v) + } + } + + if len(rp) != 3 { + return fmt.Errorf("invalid relationship format for %s", value) + } + + aID, err := extractDocElementID(strings.TrimSpace(rp[0])) + if err != nil { + return err + } + parser.rln.RefA = aID + parser.rln.Relationship = strings.TrimSpace(rp[1]) + bID, err := extractDocElementID(strings.TrimSpace(rp[2])) + if err != nil { + return err + } + parser.rln.RefB = bID + return nil + } + + if tag == "RelationshipComment" { + parser.rln.RelationshipComment = value + return nil + } + + return fmt.Errorf("received unknown tag %v in Relationship section", tag) +} |