diff --git a/sentence.go b/sentence.go index 0ec4feb..bbc6924 100644 --- a/sentence.go +++ b/sentence.go @@ -176,6 +176,10 @@ func Parse(raw string) (Sentence, error) { // Custom parser allow overriding of existing parsers if parser, ok := customParsers[s.Type]; ok { return parser(s) + } else if parser, ok := customParsers[s.Talker+s.Type]; ok { + s.Type = s.Talker + s.Type + s.Talker = "" + return parser(s) } if strings.HasPrefix(s.Raw, SentenceStart) { diff --git a/sentence_customparser_test.go b/sentence_customparser_test.go index 31dc935..b867574 100644 --- a/sentence_customparser_test.go +++ b/sentence_customparser_test.go @@ -51,6 +51,21 @@ var customparsetests = []struct { StringValue: "two", }, }, + { + name: "zzz sentence without a talker ID", + raw: "$ZZZ,30,two,*19", + msg: TestZZZ{ + BaseSentence: BaseSentence{ + Talker: "", + Type: "ZZZ", + Fields: []string{"30", "two", ""}, + Checksum: "19", + Raw: "$ZZZ,30,two,*19", + }, + NumberValue: 30, + StringValue: "two", + }, + }, { name: "zzz sentence type", raw: "$INVALID,123,123,*7D",