tn_validator 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/tn_validator.rb +72 -0
- metadata +44 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 11db9731870b3738a37a05963c8f00128404c858
|
|
4
|
+
data.tar.gz: f0010f86e7f73c58d619669a925c298528db6985
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: bc8e92e9f6b8c49b68113dfdcc37e05d35d1b54b50227bde51be1d01950fa96bb0a7627fdf79dce542a9b59d8c344b079837bd33978a076a33f448eda8433304
|
|
7
|
+
data.tar.gz: 40a23a74bd65a7d7f162440f87f16c3e35a73b40600db597f9e420d9d96e19a622440f4a00bee831dfb09bf5e00a6d12f633642e31e4b9d2e87992a65f44e202
|
data/lib/tn_validator.rb
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
module TN
|
|
2
|
+
|
|
3
|
+
class Validator
|
|
4
|
+
|
|
5
|
+
MASK = /(?<prefix>[a-z]{2})(?<number>\d{8})(?<crc>\d)(?<suffix>[a-z]{2})/i
|
|
6
|
+
class << self
|
|
7
|
+
|
|
8
|
+
def valid? number
|
|
9
|
+
r = check number
|
|
10
|
+
{ result: r == :OK, code: r, msg: Message.msg(r)}
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
def calc_crc number
|
|
14
|
+
crc =
|
|
15
|
+
number[0].to_i * 8 +
|
|
16
|
+
number[1].to_i * 6 +
|
|
17
|
+
number[2].to_i * 4 +
|
|
18
|
+
number[3].to_i * 2 +
|
|
19
|
+
number[4].to_i * 3 +
|
|
20
|
+
number[5].to_i * 5 +
|
|
21
|
+
number[6].to_i * 9 +
|
|
22
|
+
number[7].to_i * 7
|
|
23
|
+
crc = crc % 11
|
|
24
|
+
11 - crc
|
|
25
|
+
end
|
|
26
|
+
private
|
|
27
|
+
def check_length number
|
|
28
|
+
number.length == 13
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
def check_format number
|
|
32
|
+
v = number =~ MASK
|
|
33
|
+
end
|
|
34
|
+
def check_crc number
|
|
35
|
+
m =MASK.match number
|
|
36
|
+
|
|
37
|
+
m[:crc].to_s == calc_crc(m[:number]).to_s
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
def check number
|
|
44
|
+
return :BAD_LENGTH unless check_length number
|
|
45
|
+
return :BAD_FORMAT unless check_format number
|
|
46
|
+
return :BAD_CRC unless check_crc number
|
|
47
|
+
|
|
48
|
+
return :OK
|
|
49
|
+
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
class Message
|
|
54
|
+
|
|
55
|
+
class << self
|
|
56
|
+
def msg code
|
|
57
|
+
case code
|
|
58
|
+
when :OK
|
|
59
|
+
'ok'
|
|
60
|
+
when :BAD_FORMAT
|
|
61
|
+
'Number format is bad. It must be XX123456789XX'
|
|
62
|
+
when :BAD_LENGTH
|
|
63
|
+
'Number length is wrong. It must be 13 letters'
|
|
64
|
+
when :BAD_CRC
|
|
65
|
+
'Incorrect crc number'
|
|
66
|
+
else
|
|
67
|
+
''
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: tn_validator
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.2
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Max Nedelchev
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2014-12-16 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
13
|
+
description: Simple tracking number validator
|
|
14
|
+
email: max.nedelchev@gmail.com
|
|
15
|
+
executables: []
|
|
16
|
+
extensions: []
|
|
17
|
+
extra_rdoc_files: []
|
|
18
|
+
files:
|
|
19
|
+
- lib/tn_validator.rb
|
|
20
|
+
homepage: https://github.com/ssnake/tn_validator
|
|
21
|
+
licenses:
|
|
22
|
+
- MIT
|
|
23
|
+
metadata: {}
|
|
24
|
+
post_install_message:
|
|
25
|
+
rdoc_options: []
|
|
26
|
+
require_paths:
|
|
27
|
+
- lib
|
|
28
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '0'
|
|
33
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
34
|
+
requirements:
|
|
35
|
+
- - ">="
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: '0'
|
|
38
|
+
requirements: []
|
|
39
|
+
rubyforge_project:
|
|
40
|
+
rubygems_version: 2.2.0
|
|
41
|
+
signing_key:
|
|
42
|
+
specification_version: 4
|
|
43
|
+
summary: tracking number validator
|
|
44
|
+
test_files: []
|