ico-validator 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 36c0f4c596aaf1ecaeecad864c17577ee5bcb604
4
- data.tar.gz: bc26e9492611e8185559900a8cc753ce560fc6a7
3
+ metadata.gz: 5ead1e5ad457e39c8f075ae5517185fda8bf6601
4
+ data.tar.gz: 8e5050a516d388ebf8ff8b5ff571bc23ea2dd26a
5
5
  SHA512:
6
- metadata.gz: af15cfac13cbd03c1effaa3e57e78f8c8f8ba21aa444d0baf7ef54ae38188992f0aa6fd85740818f3bc26e0e5601a1686443af9507c9bf86ca8c335a293c6174
7
- data.tar.gz: a69703830b510511847d69872394ad57fa70df20c02839238ce2f8702a8251b9ed96bf79f5207c23fd16c56b5ae5b058f73237dc7e20dee3234b755ed1e2bea0
6
+ metadata.gz: d96806fd286e25538b8201b173936139ab50c353709abf0326a67518f058d75c27d24de2e2012906ec06b10bc3c00b88c02fc85237acb4f465352dc7514994b8
7
+ data.tar.gz: d6929d6f7d1e3f6f1076d31c7e4dc8915718b20ce57fa0407641183aeafe31b3f2de181b0872be52396fc1522307c13948e8015e5b667078386ae35ac73cedbc
data/Gemfile CHANGED
@@ -1,9 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- group :test, :development do
4
- gem 'rails'
5
- gem 'jasmine'
6
- end
7
-
8
3
  # Specify your gem's dependencies in ico_validator.gemspec
9
4
  gemspec
data/README.md CHANGED
@@ -8,33 +8,55 @@ ico-validator
8
8
 
9
9
 
10
10
 
11
- Rails validator for format of [Czech company identification number - ICO](http://cs.wikipedia.org/wiki/Identifika%C4%8Dn%C3%AD_%C4%8D%C3%ADslo_osoby)
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
- ICO validator is implemented as ActiveModel::EachValidator so for validation just add `ico: true` parameter to your attribute validation. If validation doesn't pass it adds `:invalid_format` error on validated attribute.
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
- attr_accessor :ico
19
- validates :ico,
20
- ico: true
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
- ```ruby
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 ico_validator = {
2
- valid_ico: function(value) {
3
- return value.length === 8 && value.match(/^\d+$/) && ico_validator.last_number_valid(value);
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
- last_number_valid: function(value) {
6
- return parseInt(value[7], 10) === ico_validator.calculate_valid_last_number(value);
23
+ lastNumberValid: function(value) {
24
+ return parseInt(value[value.length - 1], 10) === icoValidator.calculateValidLastNumber(value);
7
25
  },
8
- calculate_valid_last_number: function(value) {
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 || ico_validator.valid_ico(value) ) {
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');
@@ -0,0 +1,3 @@
1
+ machine:
2
+ ruby:
3
+ version: 2.1.7
@@ -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.4.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("ICO validator", function() {
2
- var ico_list, i;
3
- ico_list = ['61499609', '25275500', '29233011'];
4
- for( i in ico_list ) if( ico_list.hasOwnProperty(i) ) {
5
- ico_valid = ico_list[i];
6
- it("ICO " + ico_valid + " is valid", function() {
7
- expect(ico_validator.valid_ico(ico_valid)).toBeTruthy();
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
- ico_list = [null, '', '1', 123, '1111111X', '00000000', '614996097', '123456789'];
11
- for( i in ico_list ) if( ico_list.hasOwnProperty(i) ) {
12
- ico_invalid = ico_list[i];
13
- it("ICO is invalid with value " + ico_invalid, function() {
14
- expect(ico_validator.valid_ico(ico_invalid)).toBeFalsy();
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.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: 2015-07-22 00:00:00.000000000 Z
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.4.8
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:
@@ -1,12 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.2.1
4
- - 2.2.0
5
- - 2.1.1
6
- - 2.0.0
7
- script:
8
- - bundle exec rspec
9
- - bundle exec rake jasmine:ci
10
- addons:
11
- code_climate:
12
- repo_token: eebc129fa878929ebbf8f1097a518df71c73bf316dc0ae59eec048f4e3d4fdd6