Turkish ID 🔖
This gem provides methods to validate Turkish Identification Numbers.
Installation
Add this line to your application's Gemfile:
gem 'turkish_id'
And then execute:
$ bundle
Or install it yourself as:
$ gem install turkish_id
Usage
Validating ID Numbers
Create a new instance:
identity_number = TurkishId.new(10000000146)
Use valid?
method to check validity:
identity_number.valid? #=> true
Or use the command line executable:
$ turkish_id 10000000078 #=> Your identification number is valid.
Generating Relatives
You can generate ID numbers for your younger or elder relatives.
me = TurkishId.new(10000000146)
Calling younger_relative
or elder_relative
will return an Enumerable class.
me.elder_relative #=> #<Enumerator:0x00007f9e629032d0>
You can perform standard Enumerable operations on it.
me.elder_relative.first #=> 10003000082
3.times do
puts me.elder_relative.next
end
#=> 10035998982
#=> 10005999902
#=> 10008999848
me.elder_relative.take(5) #=> [10003000082, 10005999902, 10008999848, 10011999774, 10014999610]
And so on.
Anatomy of the Turkish ID Number
The Turkish Identification Number consists of 11
digits.
There are three conditions for a valid identification number:
d1 > 0
d10 == ((d1 + d3 + d5 + d7 + d9) * 7 - (d2 + d4 + d6 + d8)) mod 10
d11 == (d1 + d2 + d3 + d4 + d5 + d6 + d8 + d9 + d10) mod 10
Where dn
refers to the n-th
digit of the identification number.
Remember that a valid identification number does not imply the existence of an ID. It could only be used as a preliminary check e.g. before querying a government website. This is very similar to credit card validation.
Support
Ruby Versions Tested Against
This gem is used in production and tested against the following Ruby versions:
- ✅
2.7.1
(stable) - ✅
2.6.6
(stable) - ⏳
2.5.8
(security maintenance)
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Donations ❤️
You can donate me at Liberapay. Thanks! ☕️
Is it any good?
Yes.
License
Copyright © 2019 Kerem Bozdas
This gem is available under the terms of the MIT License.