Add checksum calculation to relevant barcode types

This commit is contained in:
Alex Good committed 2016-04-26 10:13:22 +01:00
1 parent 63f4aa2c46
commit 7435af80e5
10 files changed
+36 -10

No files matched your search

+5 -2
View File
@@ -159,25 +159,28 @@ func encodeEAN13(code string) *utils.BitList {
// Encode returns a EAN 8 or EAN 13 barcode for the given code
func Encode(code string) (barcode.Barcode, error) {
var checkSum int
if len(code) == 7 || len(code) == 12 {
code += string(calcCheckNum(code))
checkSum = utils.RuneToInt(calcCheckNum(code))
} else if len(code) == 8 || len(code) == 13 {
check := code[0 : len(code)-1]
check += string(calcCheckNum(check))
if check != code {
return nil, errors.New("checksum missmatch")
}
checkSum = utils.RuneToInt(rune(code[len(code)-1]))
}
if len(code) == 8 {
result := encodeEAN8(code)
if result != nil {
return utils.New1DCode("EAN 8", code, result), nil
return utils.New1DCode("EAN 8", code, result, checkSum), nil
}
} else if len(code) == 13 {
result := encodeEAN13(code)
if result != nil {
return utils.New1DCode("EAN 13", code, result), nil
return utils.New1DCode("EAN 13", code, result, checkSum), nil
}
}
return nil, errors.New("invalid ean code data")