88
99"""Module: barcode.ean
1010
11- :Provided barcodes: EAN-13, EAN-8, JAN
11+ :Provided barcodes: EAN-14, EAN- 13, EAN-8, JAN
1212"""
1313__docformat__ = 'restructuredtext en'
1414
@@ -149,17 +149,6 @@ class EuropeanArticleNumber8(EuropeanArticleNumber13):
149149 def __init__ (self , ean , writer = None ):
150150 EuropeanArticleNumber13 .__init__ (self , ean , writer )
151151
152- def calculate_checksum (self ):
153- """Calculates the checksum for EAN8-Code.
154-
155- :returns: The checksum for `self.ean`.
156- :rtype: Integer
157- """
158- def sum_ (x , y ): return int (x ) + int (y )
159- evensum = reduce (sum_ , self .ean [::2 ])
160- oddsum = reduce (sum_ , self .ean [1 ::2 ])
161- return (10 - ((evensum * 3 + oddsum ) % 10 )) % 10
162-
163152 def build (self ):
164153 """Builds the barcode pattern from `self.ean`.
165154
@@ -176,7 +165,35 @@ def build(self):
176165 return [code ]
177166
178167
168+ class EuropeanArticleNumber14 (EuropeanArticleNumber13 ):
169+ """Represents an EAN-14 barcode. See EAN13's __init__ for details.
170+
171+ :parameters:
172+ ean : String
173+ The ean number as string.
174+ writer : barcode.writer Instance
175+ The writer to render the barcode (default: SVGWriter).
176+ """
177+
178+ name = 'EAN-14'
179+ digits = 13
180+
181+ def calculate_checksum (self ):
182+ """Calculates the checksum for EAN13-Code.
183+
184+ :returns: The checksum for `self.ean`.
185+ :rtype: Integer
186+ """
187+
188+ def sum_ (x , y ): return int (x ) + int (y )
189+
190+ evensum = reduce (sum_ , self .ean [::2 ])
191+ oddsum = reduce (sum_ , self .ean [1 ::2 ])
192+ return (10 - (((evensum * 3 ) + oddsum ) % 10 )) % 10
193+
194+
179195# Shortcuts
196+ EAN14 = EuropeanArticleNumber14
180197EAN13 = EuropeanArticleNumber13
181198EAN8 = EuropeanArticleNumber8
182199JAN = JapanArticleNumber
0 commit comments