From 54fa0d34add7f890694b46c04130a3b8584416f5 Mon Sep 17 00:00:00 2001 From: Fred Boniface Date: Mon, 4 Sep 2023 12:05:16 +0100 Subject: [PATCH] Add Code39 --- generation/code39.go | 18 ++++++++++++++++++ generation/generate.go | 2 ++ generation/types.go | 1 + validation/rules.go | 14 +++++++------- 4 files changed, 28 insertions(+), 7 deletions(-) create mode 100644 generation/code39.go diff --git a/generation/code39.go b/generation/code39.go new file mode 100644 index 0000000..1f92b57 --- /dev/null +++ b/generation/code39.go @@ -0,0 +1,18 @@ +package generation + +import ( + "fmt" + + "github.com/boombuler/barcode" + "github.com/boombuler/barcode/code39" +) + +func generateCode39(parameters Parameters) (barcode.Barcode, error) { + GeneratedBarcode, err := code39.Encode(parameters.Content, true, true) + if err != nil { + fmt.Println("Error creating Barcode", err) + } + + strippedBarcode := GeneratedBarcode.(barcode.Barcode) + return strippedBarcode, err +} diff --git a/generation/generate.go b/generation/generate.go index 3fd8cc8..2e6c9f6 100644 --- a/generation/generate.go +++ b/generation/generate.go @@ -29,6 +29,8 @@ func Generate(parameters Parameters) (barcode.Barcode, error) { barcode_content, err = generate2of5Interleaved(parameters) case TwoOfFive: barcode_content, err = generate2of5(parameters) + case Code39: + barcode_content, err = generateCode39(parameters) default: fmt.Println("Unsupported barcode type: ", parameters.Format) } diff --git a/generation/types.go b/generation/types.go index d72a83a..577e3aa 100644 --- a/generation/types.go +++ b/generation/types.go @@ -12,6 +12,7 @@ const ( PDF417 BarcodeType = "pdf417" TwoOfFive BarcodeType = "2of5" TwoOfFiveInterleaved BarcodeType = "2of5interleaved" + Code39 BarcodeType = "code39" ) type ECCLevel int diff --git a/validation/rules.go b/validation/rules.go index 4879cdc..0289b89 100644 --- a/validation/rules.go +++ b/validation/rules.go @@ -41,13 +41,13 @@ var FormatRules = map[string]rule{ divisible: 1, }, - /* "code39": { - minLength: 1, - maxLength: 80, - charset: *CODE39, - divisible: 1, - }, - */ + "code39": { + minLength: 1, + maxLength: 80, + charset: *ASCII, + divisible: 1, + }, + "code93": { minLength: 1, maxLength: 80,