Finished braketedData processing

pull/2/head
Jean-Marc MEESSEN 4 years ago
parent 8b4e2e5986
commit 7a66731817

@ -19,17 +19,26 @@ import (
"strings" "strings"
) )
func getBraketedData(inputLine, braketType string) (text, cleanedLine string) { //The BraketType type is used to define the enumeration
type BraketType int
//Enumeration of the valid Bracket Types
const (
COMMENT BraketType = iota
QSL
)
func getBraketedData(inputLine string, braketType BraketType) (braketedData, cleanedLine string) {
// Get substring between two strings. // Get substring between two strings.
a := "" a := ""
b := "" b := ""
//TODO: refactor that as a switch statement to exclude non supported bracket types //TODO: refactor that as a switch statement to exclude non supported bracket types
if braketType == "COMMENT" { if braketType == COMMENT {
a = "<" a = "<"
b = ">" b = ">"
} }
if braketType == "QSL" { if braketType == QSL {
a = "[" a = "["
b = "]" b = "]"
} }
@ -43,8 +52,11 @@ func getBraketedData(inputLine, braketType string) (text, cleanedLine string) {
return "",inputLine return "",inputLine
} }
posFirstAdjusted := posFirst + 1 posFirstAdjusted := posFirst + 1
if posFirstAdjusted >= posLast { if posFirstAdjusted > posLast {
return "",inputLine return "",inputLine
} }
return inputLine[posFirstAdjusted:posLast], inputLine
braketedData = inputLine[posFirstAdjusted:posLast]
cleanedLine = strings.Replace(inputLine, a + braketedData + b, "",1)
return braketedData, cleanedLine
} }

@ -5,21 +5,62 @@ import "testing"
func Test_getBraketedData(t *testing.T) { func Test_getBraketedData(t *testing.T) {
type args struct { type args struct {
inputLine string inputLine string
braketType string braketType BraketType
} }
tests := []struct { tests := []struct {
name string name string
args args args args
wantText string wantBraketedData string
wantCleanedLine string wantCleanedLine string
}{ }{
// TODO: Add test cases. {
"Happy case: comment",
args{ inputLine: "aaaa <bracketed text> bbbbb", braketType: COMMENT},
"bracketed text",
"aaaa bbbbb",
},
{
"Happy case: QSL",
args{ inputLine: "aaaa [bracketed text] bbbbb", braketType: QSL},
"bracketed text",
"aaaa bbbbb",
},
{
"Happy case: nothing",
args{ inputLine: "aaaa bbbbb cccccc", braketType: QSL},
"",
"aaaa bbbbb cccccc",
},
{
"Empty brackets",
args{ inputLine: "aaaa <> bbbbb", braketType: COMMENT},
"",
"aaaa bbbbb",
},
{
"Brackets at right",
args{ inputLine: "aaaa bbbbb <bracketed text>", braketType: COMMENT},
"bracketed text",
"aaaa bbbbb ",
},
{
"concatenated",
args{ inputLine: "aaaa<bracketed text>bbbbb", braketType: COMMENT},
"bracketed text",
"aaaabbbbb",
},
{
"duplicated",
args{ inputLine: "aaaa <bracketed text> bbbbb < double > cccc", braketType: COMMENT},
"bracketed text",
"aaaa bbbbb < double > cccc",
},
} }
for _, tt := range tests { for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
gotText, gotCleanedLine := getBraketedData(tt.args.inputLine, tt.args.braketType) gotBraketedData, gotCleanedLine := getBraketedData(tt.args.inputLine, tt.args.braketType)
if gotText != tt.wantText { if gotBraketedData != tt.wantBraketedData {
t.Errorf("getBraketedData() gotText = %v, want %v", gotText, tt.wantText) t.Errorf("getBraketedData() gotBraketedData = %v, want %v", gotBraketedData, tt.wantBraketedData)
} }
if gotCleanedLine != tt.wantCleanedLine { if gotCleanedLine != tt.wantCleanedLine {
t.Errorf("getBraketedData() gotCleanedLine = %v, want %v", gotCleanedLine, tt.wantCleanedLine) t.Errorf("getBraketedData() gotCleanedLine = %v, want %v", gotCleanedLine, tt.wantCleanedLine)

@ -50,14 +50,13 @@ func ParseLine(inputStr string, previousLine LogLine) (logLine LogLine, errorMsg
//TODO: what happens when we have <> or when there are multiple comments //TODO: what happens when we have <> or when there are multiple comments
//TODO: Refactor this! it is ugly //TODO: Refactor this! it is ugly
comment,inputStr := getBraketedData(inputStr, "COMMENT") comment,inputStr := getBraketedData(inputStr, COMMENT)
if comment != "" { if comment != "" {
logLine.Comment = comment logLine.Comment = comment
inputStr = strings.Replace(inputStr, "<" + comment + ">", "",1)
fmt.Println("Cleaned input string: ", inputStr) fmt.Println("Cleaned input string: ", inputStr)
} }
comment,inputStr = getBraketedData(inputStr, "QSL") comment,inputStr = getBraketedData(inputStr, QSL)
if comment != "" { if comment != "" {
logLine.QSLmsg = comment logLine.QSLmsg = comment
inputStr = strings.Replace(inputStr, "[" + comment + "]", "",1) inputStr = strings.Replace(inputStr, "[" + comment + "]", "",1)

Loading…
Cancel
Save