Class: SecID::LEI
Overview
Legal Entity Identifier (LEI) - a 20-character alphanumeric code that uniquely identifies legal entities participating in financial transactions.
Format: 4-character LOU ID + 2-character reserved + 12-character entity ID + 2-digit check digit
Constant Summary collapse
- FULL_NAME =
'Legal Entity Identifier'- ID_LENGTH =
20- EXAMPLE =
'7LTWFZYICNSX8D621K86'- VALID_CHARS_REGEX =
/\A[0-9A-Z]+\z/- ID_REGEX =
Regular expression for parsing LEI components.
/\A (?<identifier> (?<lou_id>[0-9A-Z]{4}) (?<reserved>[0-9A-Z]{2}) (?<entity_id>[0-9A-Z]{12})) (?<check_digit>\d{2})? \z/x
Constants included from Checkable
Checkable::CHAR_TO_DIGIT, Checkable::CHAR_TO_DIGITS
Constants included from Validatable
Constants included from Normalizable
Instance Attribute Summary collapse
-
#entity_id ⇒ String?
readonly
The 12-character entity-specific identifier.
-
#lou_id ⇒ String?
readonly
The 4-character Local Operating Unit (LOU) identifier.
-
#reserved ⇒ String?
readonly
The 2-character reserved field (typically ‘00’).
Attributes inherited from Base
Instance Method Summary collapse
-
#calculate_check_digit ⇒ Integer
The calculated 2-digit check digit (1-98).
-
#initialize(lei) ⇒ LEI
constructor
A new instance of LEI.
- #to_pretty_s ⇒ String?
Methods included from Checkable
included, #restore, #restore!, #to_s, #valid?
Methods inherited from Base
#==, #as_json, #hash, inherited, #to_h
Methods included from Validatable
#errors, included, #valid?, #validate, #validate!
Methods included from Normalizable
included, #normalize!, #normalized, #to_s, #to_str
Methods included from IdentifierMetadata
Constructor Details
#initialize(lei) ⇒ LEI
Returns a new instance of LEI.
44 45 46 47 48 49 50 51 |
# File 'lib/sec_id/lei.rb', line 44 def initialize(lei) lei_parts = parse lei @identifier = lei_parts[:identifier] @lou_id = lei_parts[:lou_id] @reserved = lei_parts[:reserved] @entity_id = lei_parts[:entity_id] @check_digit = lei_parts[:check_digit]&.to_i end |
Instance Attribute Details
#entity_id ⇒ String? (readonly)
Returns the 12-character entity-specific identifier.
41 42 43 |
# File 'lib/sec_id/lei.rb', line 41 def entity_id @entity_id end |
#lou_id ⇒ String? (readonly)
Returns the 4-character Local Operating Unit (LOU) identifier.
35 36 37 |
# File 'lib/sec_id/lei.rb', line 35 def lou_id @lou_id end |
#reserved ⇒ String? (readonly)
Returns the 2-character reserved field (typically ‘00’).
38 39 40 |
# File 'lib/sec_id/lei.rb', line 38 def reserved @reserved end |
Instance Method Details
#calculate_check_digit ⇒ Integer
Returns the calculated 2-digit check digit (1-98).
62 63 64 65 |
# File 'lib/sec_id/lei.rb', line 62 def calculate_check_digit validate_format_for_calculation! mod97("#{numeric_identifier}00") end |
#to_pretty_s ⇒ String?
54 55 56 57 58 |
# File 'lib/sec_id/lei.rb', line 54 def to_pretty_s return nil unless valid? to_s.scan(/.{1,4}/).join(' ') end |