Completed
Push — master ( a73383...965224 )
by
unknown
34s
created

ITF14.js ➔ ... ➔ ???   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
c 2
b 0
f 0
nc 1
nop 1
dl 0
loc 1
rs 10
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