- Notifications
You must be signed in to change notification settings - Fork1
Validate securities identification numbers (ISIN, CUSIP, SEDOL, FIGI, CIK) with ease!
License
svyatov/sec_id
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Validate securities identification numbers with ease!
Check-digit calculation is also available.
Currently supported standards:ISIN,CUSIP,SEDOL,FIGI,CIK.
Work in progress:IBAN.
Add this line to your application's Gemfile:
gem'sec_id','~> 4.1'
And then execute:
$ bundle
Or install it yourself as:
$ gem install sec_id
Base API has 4 main methods which can be used both on class level and on instance level:
valid?
- never raises any errors, always returnstrue
orfalse
,numbers without the check-digit will returnfalse
# class levelSecId::ISIN.valid?('US5949181045')# => trueSecId::ISIN.valid?('US594918104')# => false# instance levelisin=SecId::ISIN.new('US5949181045')isin.valid?# => true
valid_format?
- never raises any errors, always returnstrue
orfalse
,numbers without the check-digit but in valid format will returntrue
# class levelSecId::ISIN.valid_format?('US5949181045')# => trueSecId::ISIN.valid_format?('US594918104')# => true# instance levelisin=SecId::ISIN.new('US594918104')isin.valid_format?# => true
restore!
- restores check-digit and returns the full number,raises an error if number's format is invalid and thus check-digit is impossible to calculate# class levelSecId::ISIN.restore!('US594918104')# => 'US5949181045'# instance levelisin=SecId::ISIN.new('US5949181045')isin.restore!# => 'US5949181045'
check_digit
andcalculate_check_digit
- these are the same,but the former is used at class level for bravity,and the latter is used at instance level for clarity;it calculates and returns the check-digit if the number is validand raises an error otherwise.# class levelSecId::ISIN.check_digit('US594918104')# => 5# instance levelisin=SecId::ISIN.new('US594918104')isin.calculate_check_digit# => 5isin.check_digit# => nil
❗ Please note that
isin.check_digit
returnsnil
because#check_digit
at instance level represents original check-digit of the number passed tonew
,which in this example is missing and thus it'snil
.
# class levelSecId::ISIN.valid?('US5949181045')# => trueSecId::ISIN.valid_format?('US594918104')# => trueSecId::ISIN.restore!('US594918104')# => 'US5949181045'SecId::ISIN.check_digit('US594918104')# => 5# instance levelisin=SecId::ISIN.new('US5949181045')isin.full_number# => 'US5949181045'isin.country_code# => 'US'isin.nsin# => '594918104'isin.check_digit# => 5isin.valid?# => trueisin.valid_format?# => trueisin.restore!# => 'US5949181045'isin.calculate_check_digit# => 5isin.to_cusip# => #<SecId::CUSIP>
# class levelSecId::CUSIP.valid?('594918104')# => trueSecId::CUSIP.valid_format?('59491810')# => trueSecId::CUSIP.restore!('59491810')# => '594918104'SecId::CUSIP.check_digit('59491810')# => 5# instance levelcusip=SecId::CUSIP.new('594918104')cusip.full_number# => '594918104'cusip.cusip6# => '594918'cusip.issue# => '10'cusip.check_digit# => 4cusip.valid?# => truecusip.valid_format?# => truecusip.restore!# => '594918104'cusip.calculate_check_digit# => 4cusip.to_isin('US')# => #<SecId::ISIN>cusip.cins?# => true
# class levelSecId::SEDOL.valid?('B0Z52W5')# => trueSecId::SEDOL.valid_format?('B0Z52W')# => trueSecId::SEDOL.restore!('B0Z52W')# => 'B0Z52W5'SecId::SEDOL.check_digit('B0Z52W')# => 5# instance levelcusip=SecId::SEDOL.new('B0Z52W5')cusip.full_number# => 'B0Z52W5'cusip.check_digit# => 5cusip.valid?# => truecusip.valid_format?# => truecusip.restore!# => 'B0Z52W5'cusip.calculate_check_digit# => 5
# class levelSecId::FIGI.valid?('BBG000DMBXR2')# => trueSecId::FIGI.valid_format?('BBG000DMBXR2')# => trueSecId::FIGI.restore!('BBG000DMBXR')# => 'BBG000DMBXR2'SecId::FIGI.check_digit('BBG000DMBXR')# => 2# instance levelfigi=SecId::FIGI.new('BBG000DMBXR2')figi.full_number# => 'BBG000DMBXR2'figi.prefix# => 'BB'figi.random_part# => '000DMBXR'figi.check_digit# => 2figi.valid?# => truefigi.valid_format?# => truefigi.restore!# => 'BBG000DMBXR2'figi.calculate_check_digit# => 2
# class levelSecId::CIK.valid?('0001094517')# => trueSecId::CIK.valid_format?('0001094517')# => trueSecId::CIK.restore!('1094517')# => '0001094517'SecId::CIK.check_digit('0001094517')# raises NotImplementedError# instance levelcik=SecId::CIK.new('0001094517')cik.full_number# => '0001094517'cik.padding# => '000'cik.identifier# => '1094517'cik.valid?# => truecik.valid_format?# => truecik.restore!# => '0001094517'cik.calculate_check_digit# raises NotImplementedErrorcik.check_digit# => nil
After checking out the repo, runbin/setup
to install dependencies.Then, runrake spec
to run the tests. You can also runbin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, runbundle exec rake install
.
Bug reports and pull requests are welcome onGitHub athttps://github.com/svyatov/sec_id.
The gem is available as open source under the terms oftheMIT License.
About
Validate securities identification numbers (ISIN, CUSIP, SEDOL, FIGI, CIK) with ease!
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.
Contributors5
Uh oh!
There was an error while loading.Please reload this page.