src/barcodes/ITF/ITF14.js   A
last analyzed

Size

Lines of Code 33

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
nc 1
dl 0
loc 33
rs 10
noi 0

1 Function

Rating   Name   Duplication   Size   Complexity  
A ITF14.js ➔ ??? 0 9 1
1
import ITF from './ITF';
2
3
// Calculate the checksum digit
4
const checksum = (data) => {
5
	const res = data
6
		.substr(0, 13)
7
		.split('')
8
		.map(num => parseInt(num, 10))
9
		.reduce((sum, n, idx) => sum + (n * (3 - (idx % 2) * 2)), 0);
10
11
	return Math.ceil(res / 10) * 10 - res;
12
};
13
14
class ITF14 extends ITF {
15
16
	constructor(data, options) {
17
		// Add checksum if it does not exist
18
		if (data.search(/^[0-9]{13}$/) !== -1) {
19
			data += checksum(data);
20
		}
21
		super(data, options);
22
	}
23
24
	valid() {
25
		return (
26
			this.data.search(/^[0-9]{14}$/) !== -1 &&
27
			+this.data[13] === checksum(this.data)
28
		);
29
	}
30
31
}
32
33
export default ITF14;
34