New Release: turkish_id v1.7.0

This version of turkish_id adds support for querying the government registry for blue card holders. Read more on RubyDoc: #foreigner_registered?

Turkish ID 🔖

This gem provides methods to validate Turkish Identification Numbers.


This content originally appeared on DEV Community and was authored by Kerem Bozdas

This version of turkish_id adds support for querying the government registry for blue card holders. Read more on RubyDoc: #foreigner_registered?

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

Querying the Government Registry

Create a new instance:

identity_number = TurkishId.new(10000000146)

Use registered? method to query the government registry:

identity_number.registered?("Ahmet", "Yılmaz", 1987)  #=> false

There is also a convenience method called not_in_registry? which is the logical equivalent of !registered?.

Use foreigner_registered? method to query the foreigner registry:

identity_number.foreigner_registered?("Yukihiro", "Matsumoto", 14, 4, 1965)  #=> false

There is also a convenience method called foreigner_not_in_registry? which is the logical equivalent of !foreigner_registered?.

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.

CLI (Command Line Interface)

You can use the CLI for quick lookups:

$ turkish_id 10000000078  #=> true

The executable terminates with a proper exit status:

$ turkish_id 10000000078  #=> true
$ echo $?                 #=> 0
$ turkish_id 10000000079  #=> false
$ echo $?                 #=> 1

Run turkish_id --help to learn more:

Usage
  turkish_id ID_NUMBER [GIVEN_NAME SURNAME YEAR_OF_BIRTH]

Description
  turkish_id validates Turkish identity numbers.
  Only providing ID_NUMBER performs numerical validation (offline).
  Providing all arguments will query government registry (online).

Examples
  turkish_id 10000000078
  turkish_id 10000000146 Ahmet Yılmaz 1984
  turkish_id 10005999902 "Ayşe Nur" Yılmaz 1996

Anatomy of the Turkish ID Number

The Turkish Identification Number consists of 11 digits.

There are three conditions for a valid identification number:

  1. d1 > 0
  2. d10 == ((d1 + d3 + d5 + d7 + d9) * 7 - (d2 + d4 + d6 + d8)) mod 10
  3. 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:

  • 3.3.5 (stable)
  • 3.2.6 (stable)
  • 3.1.6 (security maintenance)
  • 🪦 3.0.7 (end of life)

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

  1. Fork the repository
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Donations ❤️

You can donate me at Liberapay. Thanks! ☕️

Is it any good?

Yes.

Since you made it this far.. 🤓

Don't forget to ⭐️ my repository if you like it!

Bug reports and pull requests are welcome! ♥️

Happy Hacking,
Kerem

Photo Courtesy of Umit Okan


This content originally appeared on DEV Community and was authored by Kerem Bozdas


Print Share Comment Cite Upload Translate Updates
APA

Kerem Bozdas | Sciencx (2024-11-10T15:15:21+00:00) New Release: turkish_id v1.7.0. Retrieved from https://www.scien.cx/2024/11/10/new-release-turkish_id-v1-7-0/

MLA
" » New Release: turkish_id v1.7.0." Kerem Bozdas | Sciencx - Sunday November 10, 2024, https://www.scien.cx/2024/11/10/new-release-turkish_id-v1-7-0/
HARVARD
Kerem Bozdas | Sciencx Sunday November 10, 2024 » New Release: turkish_id v1.7.0., viewed ,<https://www.scien.cx/2024/11/10/new-release-turkish_id-v1-7-0/>
VANCOUVER
Kerem Bozdas | Sciencx - » New Release: turkish_id v1.7.0. [Internet]. [Accessed ]. Available from: https://www.scien.cx/2024/11/10/new-release-turkish_id-v1-7-0/
CHICAGO
" » New Release: turkish_id v1.7.0." Kerem Bozdas | Sciencx - Accessed . https://www.scien.cx/2024/11/10/new-release-turkish_id-v1-7-0/
IEEE
" » New Release: turkish_id v1.7.0." Kerem Bozdas | Sciencx [Online]. Available: https://www.scien.cx/2024/11/10/new-release-turkish_id-v1-7-0/. [Accessed: ]
rf:citation
» New Release: turkish_id v1.7.0 | Kerem Bozdas | Sciencx | https://www.scien.cx/2024/11/10/new-release-turkish_id-v1-7-0/ |

Please log in to upload a file.




There are no updates yet.
Click the Upload button above to add an update.

You must be logged in to translate posts. Please log in or register.