diff options
Diffstat (limited to 'vendor/github.com/boombuler/barcode/codabar/encoder.go')
| -rw-r--r-- | vendor/github.com/boombuler/barcode/codabar/encoder.go | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/vendor/github.com/boombuler/barcode/codabar/encoder.go b/vendor/github.com/boombuler/barcode/codabar/encoder.go new file mode 100644 index 0000000..69cf1a9 --- /dev/null +++ b/vendor/github.com/boombuler/barcode/codabar/encoder.go @@ -0,0 +1,49 @@ +// Package codabar can create Codabar barcodes +package codabar + +import ( + "fmt" + "regexp" + + "github.com/boombuler/barcode" + "github.com/boombuler/barcode/utils" +) + +var encodingTable = map[rune][]bool{ + '0': []bool{true, false, true, false, true, false, false, true, true}, + '1': []bool{true, false, true, false, true, true, false, false, true}, + '2': []bool{true, false, true, false, false, true, false, true, true}, + '3': []bool{true, true, false, false, true, false, true, false, true}, + '4': []bool{true, false, true, true, false, true, false, false, true}, + '5': []bool{true, true, false, true, false, true, false, false, true}, + '6': []bool{true, false, false, true, false, true, false, true, true}, + '7': []bool{true, false, false, true, false, true, true, false, true}, + '8': []bool{true, false, false, true, true, false, true, false, true}, + '9': []bool{true, true, false, true, false, false, true, false, true}, + '-': []bool{true, false, true, false, false, true, true, false, true}, + '$': []bool{true, false, true, true, false, false, true, false, true}, + ':': []bool{true, true, false, true, false, true, true, false, true, true}, + '/': []bool{true, true, false, true, true, false, true, false, true, true}, + '.': []bool{true, true, false, true, true, false, true, true, false, true}, + '+': []bool{true, false, true, true, false, false, true, true, false, false, true, true}, + 'A': []bool{true, false, true, true, false, false, true, false, false, true}, + 'B': []bool{true, false, true, false, false, true, false, false, true, true}, + 'C': []bool{true, false, false, true, false, false, true, false, true, true}, + 'D': []bool{true, false, true, false, false, true, true, false, false, true}, +} + +// Encode creates a codabar barcode for the given content +func Encode(content string) (barcode.Barcode, error) { + checkValid, _ := regexp.Compile(`[ABCD][0123456789\-\$\:/\.\+]*[ABCD]$`) + if content == "!" || checkValid.ReplaceAllString(content, "!") != "!" { + return nil, fmt.Errorf("can not encode \"%s\"", content) + } + resBits := new(utils.BitList) + for i, r := range content { + if i > 0 { + resBits.AddBit(false) + } + resBits.AddBit(encodingTable[r]...) + } + return utils.New1DCode("Codabar", content, resBits, 0), nil +} |
