mirror of
https://github.com/on4kjm/FLEcli.git
synced 2025-01-19 05:01:18 +01:00
Finished braketedData processing
This commit is contained in:
parent
8b4e2e5986
commit
7a66731817
3 changed files with 70 additions and 18 deletions
|
@ -19,17 +19,26 @@ import (
|
|||
"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.
|
||||
a := ""
|
||||
b := ""
|
||||
|
||||
//TODO: refactor that as a switch statement to exclude non supported bracket types
|
||||
if braketType == "COMMENT" {
|
||||
if braketType == COMMENT {
|
||||
a = "<"
|
||||
b = ">"
|
||||
}
|
||||
if braketType == "QSL" {
|
||||
if braketType == QSL {
|
||||
a = "["
|
||||
b = "]"
|
||||
}
|
||||
|
@ -43,8 +52,11 @@ func getBraketedData(inputLine, braketType string) (text, cleanedLine string) {
|
|||
return "",inputLine
|
||||
}
|
||||
posFirstAdjusted := posFirst + 1
|
||||
if posFirstAdjusted >= posLast {
|
||||
if posFirstAdjusted > posLast {
|
||||
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) {
|
||||
type args struct {
|
||||
inputLine string
|
||||
braketType string
|
||||
braketType BraketType
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
wantText string
|
||||
wantCleanedLine string
|
||||
name string
|
||||
args args
|
||||
wantBraketedData 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 {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
gotText, gotCleanedLine := getBraketedData(tt.args.inputLine, tt.args.braketType)
|
||||
if gotText != tt.wantText {
|
||||
t.Errorf("getBraketedData() gotText = %v, want %v", gotText, tt.wantText)
|
||||
gotBraketedData, gotCleanedLine := getBraketedData(tt.args.inputLine, tt.args.braketType)
|
||||
if gotBraketedData != tt.wantBraketedData {
|
||||
t.Errorf("getBraketedData() gotBraketedData = %v, want %v", gotBraketedData, tt.wantBraketedData)
|
||||
}
|
||||
if 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: Refactor this! it is ugly
|
||||
comment,inputStr := getBraketedData(inputStr, "COMMENT")
|
||||
comment,inputStr := getBraketedData(inputStr, COMMENT)
|
||||
if comment != "" {
|
||||
logLine.Comment = comment
|
||||
inputStr = strings.Replace(inputStr, "<" + comment + ">", "",1)
|
||||
fmt.Println("Cleaned input string: ", inputStr)
|
||||
}
|
||||
|
||||
comment,inputStr = getBraketedData(inputStr, "QSL")
|
||||
comment,inputStr = getBraketedData(inputStr, QSL)
|
||||
if comment != "" {
|
||||
logLine.QSLmsg = comment
|
||||
inputStr = strings.Replace(inputStr, "[" + comment + "]", "",1)
|
||||
|
|
Loading…
Reference in a new issue