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 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