ico-validator 0.4.0 → 0.5.0
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 +4 -4
- data/Gemfile +0 -5
- data/README.md +37 -15
- data/app/assets/javascripts/ico-validator.js +25 -7
- data/circle.yml +3 -0
- data/ico-validator.gemspec +3 -1
- data/spec/javascripts/validator_spec.js +18 -15
- metadata +32 -5
- data/.travis.yml +0 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5ead1e5ad457e39c8f075ae5517185fda8bf6601
|
4
|
+
data.tar.gz: 8e5050a516d388ebf8ff8b5ff571bc23ea2dd26a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d96806fd286e25538b8201b173936139ab50c353709abf0326a67518f058d75c27d24de2e2012906ec06b10bc3c00b88c02fc85237acb4f465352dc7514994b8
|
7
|
+
data.tar.gz: d6929d6f7d1e3f6f1076d31c7e4dc8915718b20ce57fa0407641183aeafe31b3f2de181b0872be52396fc1522307c13948e8015e5b667078386ae35ac73cedbc
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -8,33 +8,55 @@ ico-validator
|
|
8
8
|
|
9
9
|
|
10
10
|
|
11
|
-
|
11
|
+
Ruby validator for format of [Czech company identification number - ICO](http://cs.wikipedia.org/wiki/Identifika%C4%8Dn%C3%AD_%C4%8D%C3%ADslo_osoby)
|
12
|
+
|
13
|
+
**Contains:**
|
14
|
+
|
15
|
+
1. Standalone ruby validator
|
16
|
+
2. Rails ActiveModel::EachValidator
|
17
|
+
3. JS validator
|
18
|
+
|
19
|
+
**What is validated:**
|
20
|
+
|
21
|
+
1. ICO length - must be exactly 8 characters
|
22
|
+
2. ICO must contain only numbers
|
23
|
+
3. ICO number must satisfy [last digit control formula ](http://www.cssz.cz/cz/e-podani/pro-vyvojare/definice-druhu-e-podani/p-o/logicke-testy-datove-vety.htm)
|
12
24
|
|
13
25
|
## Usage
|
14
|
-
|
26
|
+
### Ruby validator
|
27
|
+
Ruby validator is one simple module with only one public method `IcoValidation.valid_ico?` which returns true or false.
|
15
28
|
|
16
|
-
### Full Example
|
17
29
|
```ruby
|
18
|
-
|
19
|
-
|
20
|
-
|
30
|
+
require 'ico_validator'
|
31
|
+
|
32
|
+
IcoValidation.valid_ico?('12345678') # invalid ico
|
33
|
+
=> false
|
34
|
+
|
35
|
+
IcoValidation.valid_ico?('27169278')
|
36
|
+
=> true
|
21
37
|
|
22
38
|
```
|
23
39
|
|
40
|
+
### Rails validator
|
41
|
+
Rails validator is implemented as [ActiveModel::EachValidator](http://api.rubyonrails.org/classes/ActiveModel/Validator.html). So it's easy to use within your AR models:
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
class Company < ActiveRecord::Base
|
45
|
+
validates :ico, ico: true
|
46
|
+
end
|
47
|
+
```
|
48
|
+
If validation doesn't pass it adds `:invalid_format` error on validated attribute.
|
49
|
+
|
24
50
|
### JS validation
|
51
|
+
ico-validator is Rails engine, so if you want to validate ico with javascript just add following to application.js
|
25
52
|
```js
|
26
|
-
application.js
|
27
53
|
//= require ico-validator
|
28
54
|
```
|
29
|
-
|
55
|
+
|
56
|
+
And then on any field you want to be validated with JS:
|
57
|
+
```erb
|
30
58
|
<%= form_for(...) do |f| %>
|
31
59
|
<%= f.text_field :ico, class: 'ico-validate' %>
|
32
60
|
<% end %>
|
33
61
|
```
|
34
|
-
|
35
|
-
### What is validated
|
36
|
-
|
37
|
-
* ICO length - must be exactly 8 characters
|
38
|
-
* ICO must contain only numbers
|
39
|
-
* ICO number must satisfy [last digit control formula ](http://www.cssz.cz/cz/e-podani/pro-vyvojare/definice-druhu-e-podani/p-o/logicke-testy-datove-vety.htm)
|
40
|
-
|
62
|
+
jQuery will bind validations there.
|
@@ -1,11 +1,29 @@
|
|
1
|
-
var
|
2
|
-
|
3
|
-
|
1
|
+
var icoValidator = {
|
2
|
+
validIco: function(value) {
|
3
|
+
var $newValue,
|
4
|
+
$remainingDigits,
|
5
|
+
i,
|
6
|
+
j;
|
7
|
+
|
8
|
+
if (value.length === 8) {
|
9
|
+
return value.match(/^\d+$/) && icoValidator.lastNumberValid(value);
|
10
|
+
} else {
|
11
|
+
$remainingDigits = 8 - value.length;
|
12
|
+
$newValue = value;
|
13
|
+
i = 0;
|
14
|
+
j = $remainingDigits;
|
15
|
+
while (i < j) {
|
16
|
+
$newValue = '0' + $newValue;
|
17
|
+
i++;
|
18
|
+
}
|
19
|
+
|
20
|
+
return $newValue.length === 8 && $newValue.match(/^\d+$/) && icoValidator.lastNumberValid($newValue);
|
21
|
+
}
|
4
22
|
},
|
5
|
-
|
6
|
-
return parseInt(value[
|
23
|
+
lastNumberValid: function(value) {
|
24
|
+
return parseInt(value[value.length - 1], 10) === icoValidator.calculateValidLastNumber(value);
|
7
25
|
},
|
8
|
-
|
26
|
+
calculateValidLastNumber: function(value) {
|
9
27
|
var sum = 0;
|
10
28
|
for( var i = 0; i <= 6; i++ ) {
|
11
29
|
sum += value[i] * (8 - i);
|
@@ -26,7 +44,7 @@ jQuery( function($) {
|
|
26
44
|
|
27
45
|
function validate(el) {
|
28
46
|
var value = $(el).val();
|
29
|
-
if( value.length <= 0 ||
|
47
|
+
if( value.length <= 0 || icoValidator.validIco(value) ) {
|
30
48
|
$(el).parent().removeClass('field_with_errors').removeClass('error');
|
31
49
|
} else {
|
32
50
|
$(el).parent().addClass('field_with_errors').addClass('error');
|
data/circle.yml
ADDED
data/ico-validator.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |spec|
|
6
6
|
spec.name = 'ico-validator'
|
7
|
-
spec.version = '0.
|
7
|
+
spec.version = '0.5.0'
|
8
8
|
spec.authors = ['Premysl Donat']
|
9
9
|
spec.email = ['donat@uol.cz']
|
10
10
|
spec.summary = %q{Rails validator for validating format of czech identification number = IC}
|
@@ -23,4 +23,6 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency 'rake'
|
24
24
|
spec.add_development_dependency 'rspec'
|
25
25
|
spec.add_development_dependency 'codeclimate-test-reporter'
|
26
|
+
spec.add_development_dependency 'rails', '~> 4.1'
|
27
|
+
spec.add_development_dependency 'jasmine'
|
26
28
|
end
|
@@ -1,18 +1,21 @@
|
|
1
|
-
describe(
|
2
|
-
var
|
3
|
-
|
4
|
-
for( i in
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
describe('ICO validator', function() {
|
2
|
+
var icoList, i;
|
3
|
+
icoList = ['61499609', '25275500', '29233011'];
|
4
|
+
for( i in icoList ) {
|
5
|
+
if( icoList.hasOwnProperty(i) ) {
|
6
|
+
var icoValid = icoList[i];
|
7
|
+
it('ICO ' + icoValid + ' is valid', function() {
|
8
|
+
expect(icoValidator.validIco(icoValid)).toBeTruthy();
|
9
|
+
});
|
10
|
+
}
|
9
11
|
}
|
10
|
-
|
11
|
-
for( i in
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
icoList = [null, '', '1', 123, '1111111X', '00000000', '614996097', '123456789'];
|
13
|
+
for( i in icoList ) {
|
14
|
+
if( icoList.hasOwnProperty(i) ) {
|
15
|
+
var icoInvalid = icoList[i];
|
16
|
+
it('ICO is invalid with value ' + icoInvalid, function() {
|
17
|
+
expect(icoValidator.validIco(icoInvalid)).toBeFalsy();
|
18
|
+
});
|
19
|
+
}
|
16
20
|
}
|
17
21
|
});
|
18
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ico-validator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Premysl Donat
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-11-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -80,6 +80,34 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rails
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '4.1'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '4.1'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: jasmine
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
83
111
|
description: Rails validator for validating format of czech identification number
|
84
112
|
= IC
|
85
113
|
email:
|
@@ -90,13 +118,13 @@ extra_rdoc_files: []
|
|
90
118
|
files:
|
91
119
|
- ".gitignore"
|
92
120
|
- ".hound.yml"
|
93
|
-
- ".travis.yml"
|
94
121
|
- CHANGELOG.md
|
95
122
|
- Gemfile
|
96
123
|
- LICENSE
|
97
124
|
- README.md
|
98
125
|
- Rakefile
|
99
126
|
- app/assets/javascripts/ico-validator.js
|
127
|
+
- circle.yml
|
100
128
|
- ico-validator.gemspec
|
101
129
|
- lib/ico-validator.rb
|
102
130
|
- lib/ico-validator/engine.rb
|
@@ -130,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
158
|
version: '0'
|
131
159
|
requirements: []
|
132
160
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.
|
161
|
+
rubygems_version: 2.5.1
|
134
162
|
signing_key:
|
135
163
|
specification_version: 4
|
136
164
|
summary: Rails validator for validating format of czech identification number = IC
|
@@ -141,4 +169,3 @@ test_files:
|
|
141
169
|
- spec/javascripts/support/jasmine_helper.rb
|
142
170
|
- spec/javascripts/validator_spec.js
|
143
171
|
- spec/spec_helper.rb
|
144
|
-
has_rdoc:
|
data/.travis.yml
DELETED