From 0b2effd135c0398ca738bf87b9bb1da013de8dd2 Mon Sep 17 00:00:00 2001 From: Fred Boniface Date: Mon, 4 Sep 2023 12:11:45 +0100 Subject: [PATCH] Implement EAN and improve Code39 error handling --- generation/code39.go | 5 +++-- generation/ean.go | 20 ++++++++++++++++++++ generation/generate.go | 2 ++ generation/types.go | 1 + validation/rules.go | 21 +++++++-------------- 5 files changed, 33 insertions(+), 16 deletions(-) create mode 100644 generation/ean.go diff --git a/generation/code39.go b/generation/code39.go index 1f92b57..6df52f4 100644 --- a/generation/code39.go +++ b/generation/code39.go @@ -8,11 +8,12 @@ import ( ) func generateCode39(parameters Parameters) (barcode.Barcode, error) { + var strippedBarcode barcode.Barcode GeneratedBarcode, err := code39.Encode(parameters.Content, true, true) if err != nil { fmt.Println("Error creating Barcode", err) + } else { + strippedBarcode = GeneratedBarcode.(barcode.Barcode) } - - strippedBarcode := GeneratedBarcode.(barcode.Barcode) return strippedBarcode, err } diff --git a/generation/ean.go b/generation/ean.go new file mode 100644 index 0000000..a2669fc --- /dev/null +++ b/generation/ean.go @@ -0,0 +1,20 @@ +package generation + +import ( + "fmt" + + "github.com/boombuler/barcode" + "github.com/boombuler/barcode/ean" +) + +func generateEAN(parameters Parameters) (barcode.Barcode, error) { + var strippedBarcode barcode.Barcode + GeneratedBarcode, err := ean.Encode(parameters.Content) + if err != nil { + fmt.Println("Error creating Barcode", err) + } else { + strippedBarcode = GeneratedBarcode.(barcode.Barcode) + } + + return strippedBarcode, err +} diff --git a/generation/generate.go b/generation/generate.go index 2e6c9f6..224f4f7 100644 --- a/generation/generate.go +++ b/generation/generate.go @@ -31,6 +31,8 @@ func Generate(parameters Parameters) (barcode.Barcode, error) { barcode_content, err = generate2of5(parameters) case Code39: barcode_content, err = generateCode39(parameters) + case EAN: + barcode_content, err = generateEAN(parameters) default: fmt.Println("Unsupported barcode type: ", parameters.Format) } diff --git a/generation/types.go b/generation/types.go index 577e3aa..7656cb9 100644 --- a/generation/types.go +++ b/generation/types.go @@ -13,6 +13,7 @@ const ( TwoOfFive BarcodeType = "2of5" TwoOfFiveInterleaved BarcodeType = "2of5interleaved" Code39 BarcodeType = "code39" + EAN BarcodeType = "ean" ) type ECCLevel int diff --git a/validation/rules.go b/validation/rules.go index 0289b89..33ecc03 100644 --- a/validation/rules.go +++ b/validation/rules.go @@ -68,21 +68,14 @@ var FormatRules = map[string]rule{ charset: *ANY, divisible: 1, }, - /* - "ean8": { - minLength: 7, - maxLength: 7, - charset: *NUMERAL, - divisible: 1, - }, - "ean13": { - minLength: 12, - maxLength: 12, - charset: *NUMERAL, - divisible: 1, - }, - */ + "ean": { + minLength: 7, + maxLength: 12, + charset: *NUMERAL, + divisible: 1, + }, + "pdf417": { minLength: 1, maxLength: 1100,