EAN5.js 723 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // Encoding documentation:
  2. // https://en.wikipedia.org/wiki/EAN_5#Encoding
  3. import { EAN5_STRUCTURE } from './constants';
  4. import encode from './encoder';
  5. import Barcode from '../Barcode';
  6. const checksum = (data) => {
  7. const result = data
  8. .split('')
  9. .map(n => +n)
  10. .reduce((sum, a, idx) => {
  11. return idx % 2
  12. ? sum + a * 9
  13. : sum + a * 3;
  14. }, 0);
  15. return result % 10;
  16. };
  17. class EAN5 extends Barcode {
  18. constructor(data, options) {
  19. super(data, options);
  20. }
  21. valid() {
  22. return this.data.search(/^[0-9]{5}$/) !== -1;
  23. }
  24. encode() {
  25. const structure = EAN5_STRUCTURE[checksum(this.data)];
  26. return {
  27. data: '1011' + encode(this.data, structure, '01'),
  28. text: this.text
  29. };
  30. }
  31. }
  32. export default EAN5;