kangal 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/.gitignore +19 -0
- data/.travis.yml +3 -0
- data/CHANGELOG.md +19 -0
- data/Gemfile +6 -0
- data/LICENSE.txt +22 -0
- data/README.md +77 -0
- data/Rakefile +7 -0
- data/config/locales/en.yml +5 -0
- data/config/locales/tr.yml +5 -0
- data/kangal.gemspec +25 -0
- data/lib/kangal.rb +4 -0
- data/lib/kangal/email.rb +27 -0
- data/lib/kangal/version.rb +3 -0
- data/spec/email_spec.rb +25 -0
- data/spec/spec_helper.rb +22 -0
- metadata +131 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: eb2722a5dfceae4f70173853595ce1b8fb27b55e
|
4
|
+
data.tar.gz: 084a51fdb1e192a443c33816d32eba501c8ce7ce
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ab0b9b64d7f2fe4e575668a2df96775c5dba7cf3861f6a809159b9b9d8955c59f84f1437524d26198a097e59db3804b82898a79ea8ee5fd45876265c69fcf912
|
7
|
+
data.tar.gz: ced4d242ee9f6331a1eea02b333ecbb668ea4743bd659b2cd8e4c1bd7d839318088bb4984f49188ba52ad7ac400a530a4dc43d18f266f79b66df5183eb5b1f60
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
|
2
|
+
#### [Current]
|
3
|
+
|
4
|
+
####
|
5
|
+
* [bca3a4c](bca3a4c) add CHANGELOG.md __(Onur Ozgur OZKAN)__
|
6
|
+
* [8a5dd69](8a5dd69) #7 add travis-ci flag to README.md __(Onur Ozgur OZKAN)__
|
7
|
+
* [5a48bab](5a48bab) #2 fixed email format for spec __(Onur Ozgur OZKAN)__
|
8
|
+
* [382d3d1](382d3d1) #7 add travis-ci service __(Onur Ozgur OZKAN)__
|
9
|
+
* [85ad341](85ad341) Improve README.md __(Onur Ozgur OZKAN)__
|
10
|
+
* [4a986b9](4a986b9) #5 add locale system and files __(Onur Ozgur OZKAN)__
|
11
|
+
* [80f0aea](80f0aea) #2 add email validation __(Onur Ozgur OZKAN)__
|
12
|
+
* [189bbba](189bbba) #2 add spec for email __(Onur Ozgur OZKAN)__
|
13
|
+
* [42b68b5](42b68b5) #4 setup rspec and rake __(Onur Ozgur OZKAN)__
|
14
|
+
* [34cc03a](34cc03a) #4 set rspec and rake __(Onur Ozgur OZKAN)__
|
15
|
+
* [3d0b486](3d0b486) #1 fix license.txt __(Onur Ozgur OZKAN)__
|
16
|
+
* [cd9ed2e](cd9ed2e) #1 convert double quotes to single quotes __(Onur Ozgur OZKAN)__
|
17
|
+
* [c9896cb](c9896cb) #1 setup Code Climate and Gemnasium __(Onur Ozgur OZKAN)__
|
18
|
+
* [8ef9ff8](8ef9ff8) #1 setup gem __(Onur Ozgur OZKAN)__
|
19
|
+
* [29e3e1e](29e3e1e) #1 setup gem __(Onur Ozgur OZKAN)__
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 lab2023 - internet technologies
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
# Kangal
|
2
|
+
|
3
|
+
[](https://codeclimate.com/github/kebab-project/kangal)
|
4
|
+
[](https://gemnasium.com/kebab-project/kangal)
|
5
|
+
[](https://travis-ci.org/kebab-project/kangal)
|
6
|
+
|
7
|
+
NOTE: Don't use this gem until v1.0.0
|
8
|
+
|
9
|
+
**Kangal**
|
10
|
+
|
11
|
+
## Requirements
|
12
|
+
|
13
|
+
Before generating your application, you will need:
|
14
|
+
|
15
|
+
* Ruby ~> 2.0
|
16
|
+
* Rails ~> 4.0
|
17
|
+
|
18
|
+
## Usage
|
19
|
+
|
20
|
+
In your Gemfile
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
gem 'kangal'
|
24
|
+
```
|
25
|
+
|
26
|
+
|
27
|
+
In your code
|
28
|
+
|
29
|
+
```ruby
|
30
|
+
require 'kangal'
|
31
|
+
class User
|
32
|
+
include ActiveModel::Validations
|
33
|
+
attr_accessor :email
|
34
|
+
|
35
|
+
validates :email, presence: :true, email: :true
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
p = User.new
|
40
|
+
p.email = "info@lab2023.com"
|
41
|
+
p.valid? # => true
|
42
|
+
|
43
|
+
p.email = "info@lab"
|
44
|
+
p.valid? # => false
|
45
|
+
|
46
|
+
p.email = "Onur Ozgur <info@lab2023.com>"
|
47
|
+
p.valid? # => false
|
48
|
+
```
|
49
|
+
|
50
|
+
|
51
|
+
## Bugs and Feedback
|
52
|
+
|
53
|
+
If you discover any bugs or want to drop a line, feel free to create an issue on GitHub.
|
54
|
+
|
55
|
+
http://github.com/kebab-project/kangal
|
56
|
+
|
57
|
+
## Contributing
|
58
|
+
|
59
|
+
Kangal uses [TomDoc](http://tomdoc.org/), [rDoc](http://rubydoc.info/gems/kangal) and [SemVer](http://semver.org/), and takes it seriously.
|
60
|
+
|
61
|
+
Once you've made your great commits:
|
62
|
+
|
63
|
+
1. Fork Template
|
64
|
+
2. Create a topic branch - `git checkout -b my_branch`
|
65
|
+
3. Push to your branch - `git push origin my_branch`
|
66
|
+
4. Create a Pull Request from your branch
|
67
|
+
5. That's it!
|
68
|
+
|
69
|
+
## Credits
|
70
|
+
|
71
|
+
- Kangal is maintained and funded by [lab2023 - internet technologies](http://lab2023.com/)
|
72
|
+
- Thank you to all the [contributors!](https://github.com/kebab-project/kangal/graphs/contributors)
|
73
|
+
- The names and logos for lab2023 are trademarks of lab2023, inc.
|
74
|
+
|
75
|
+
## License
|
76
|
+
|
77
|
+
Copyright 2012 lab2023 – internet technologies
|
data/Rakefile
ADDED
data/kangal.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'kangal/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'kangal'
|
8
|
+
spec.version = Kangal::VERSION
|
9
|
+
spec.authors = ['lab2023', 'Onur Özgür ÖZKAN']
|
10
|
+
spec.email = %w(info@lab2023.com onur.ozgur.ozkan@lab2023.com)
|
11
|
+
spec.description = %q{Kangal brings you a nice set of custom validators for Rails 4.}
|
12
|
+
spec.summary = %q{Kangal brings you a nice set of custom validators for Rails 4.}
|
13
|
+
spec.homepage = 'https://github.com/kebab-project/kangal'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.require_paths = %w(lib)
|
18
|
+
|
19
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
20
|
+
spec.add_development_dependency 'rspec'
|
21
|
+
spec.add_development_dependency 'rake'
|
22
|
+
|
23
|
+
spec.add_runtime_dependency 'mail'
|
24
|
+
spec.add_runtime_dependency 'activemodel', '>= 0'
|
25
|
+
end
|
data/lib/kangal.rb
ADDED
data/lib/kangal/email.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'active_model'
|
2
|
+
require 'active_model/validations'
|
3
|
+
require 'mail'
|
4
|
+
|
5
|
+
class EmailValidator < ActiveModel::EachValidator
|
6
|
+
|
7
|
+
def validate_each(record, attribute, value)
|
8
|
+
# takes from https://github.com/hallelujah/valid_email/blob/master/lib/valid_email/email_validator.rb
|
9
|
+
begin
|
10
|
+
m = Mail::Address.new(value)
|
11
|
+
# We must check that value contains a domain and that value is an email address
|
12
|
+
r = m.domain && m.address == value
|
13
|
+
t = m.__send__(:tree)
|
14
|
+
# We need to dig into treetop
|
15
|
+
# A valid domain must have dot_atom_text elements size > 1
|
16
|
+
# user@localhost is excluded
|
17
|
+
# treetop must respond to domain
|
18
|
+
# We exclude valid email values like <user@localhost.com>
|
19
|
+
# Hence we use m.__send__(tree).domain
|
20
|
+
r &&= (t.domain.dot_atom_text.elements.size > 1)
|
21
|
+
rescue Exception => e
|
22
|
+
r = false
|
23
|
+
end
|
24
|
+
record.errors.add attribute, (options[:message] || I18n.t(:invalid, :scope => 'kangal.validations.email')) unless r
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
data/spec/email_spec.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class User < SpecModel
|
4
|
+
validates :email, email: true
|
5
|
+
end
|
6
|
+
|
7
|
+
describe 'Email format' do
|
8
|
+
|
9
|
+
let(:invalid_emails) do
|
10
|
+
%w(invalid email)
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:valid_emails) do
|
14
|
+
%w(info@lab2023.com abc@ab.com)
|
15
|
+
end
|
16
|
+
|
17
|
+
it 'should be invalid' do
|
18
|
+
invalid_emails.each { |email| User.new(email: email).valid?.should be_false }
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'should be valid' do
|
22
|
+
valid_emails.each { |email| User.new(email: email).valid?.should be_true }
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'active_model'
|
4
|
+
require 'kangal'
|
5
|
+
|
6
|
+
class SpecModel
|
7
|
+
|
8
|
+
include ActiveModel::Validations
|
9
|
+
|
10
|
+
def initialize(attributes = {})
|
11
|
+
@attributes = attributes
|
12
|
+
end
|
13
|
+
|
14
|
+
def read_attribute_for_validation(key)
|
15
|
+
@attributes[key]
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
#RSpec.configure do |config|
|
21
|
+
#
|
22
|
+
#end
|
metadata
ADDED
@@ -0,0 +1,131 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kangal
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- lab2023
|
8
|
+
- Onur Özgür ÖZKAN
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-07-25 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ~>
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '1.3'
|
21
|
+
type: :development
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '1.3'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: rspec
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rake
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - '>='
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - '>='
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: mail
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: activemodel
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - '>='
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
description: Kangal brings you a nice set of custom validators for Rails 4.
|
85
|
+
email:
|
86
|
+
- info@lab2023.com
|
87
|
+
- onur.ozgur.ozkan@lab2023.com
|
88
|
+
executables: []
|
89
|
+
extensions: []
|
90
|
+
extra_rdoc_files: []
|
91
|
+
files:
|
92
|
+
- .gitignore
|
93
|
+
- .travis.yml
|
94
|
+
- CHANGELOG.md
|
95
|
+
- Gemfile
|
96
|
+
- LICENSE.txt
|
97
|
+
- README.md
|
98
|
+
- Rakefile
|
99
|
+
- config/locales/en.yml
|
100
|
+
- config/locales/tr.yml
|
101
|
+
- kangal.gemspec
|
102
|
+
- lib/kangal.rb
|
103
|
+
- lib/kangal/email.rb
|
104
|
+
- lib/kangal/version.rb
|
105
|
+
- spec/email_spec.rb
|
106
|
+
- spec/spec_helper.rb
|
107
|
+
homepage: https://github.com/kebab-project/kangal
|
108
|
+
licenses:
|
109
|
+
- MIT
|
110
|
+
metadata: {}
|
111
|
+
post_install_message:
|
112
|
+
rdoc_options: []
|
113
|
+
require_paths:
|
114
|
+
- lib
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
117
|
+
- - '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
requirements: []
|
126
|
+
rubyforge_project:
|
127
|
+
rubygems_version: 2.0.5
|
128
|
+
signing_key:
|
129
|
+
specification_version: 4
|
130
|
+
summary: Kangal brings you a nice set of custom validators for Rails 4.
|
131
|
+
test_files: []
|