Module: SecID
- Defined in:
- lib/sec_id.rb,
lib/sec_id/cei.rb,
lib/sec_id/cfi.rb,
lib/sec_id/cik.rb,
lib/sec_id/lei.rb,
lib/sec_id/occ.rb,
lib/sec_id/wkn.rb,
lib/sec_id/base.rb,
lib/sec_id/figi.rb,
lib/sec_id/fisn.rb,
lib/sec_id/iban.rb,
lib/sec_id/isin.rb,
lib/sec_id/cusip.rb,
lib/sec_id/sedol.rb,
lib/sec_id/errors.rb,
lib/sec_id/scanner.rb,
lib/sec_id/valoren.rb,
lib/sec_id/version.rb,
lib/sec_id/detector.rb,
lib/sec_id/concerns/checkable.rb,
lib/sec_id/iban/country_rules.rb,
lib/sec_id/concerns/validatable.rb,
lib/sec_id/concerns/normalizable.rb,
lib/sec_id/concerns/identifier_metadata.rb
Defined Under Namespace
Modules: Checkable, IBANCountryRules, IdentifierMetadata, Normalizable, Validatable Classes: AmbiguousMatchError, Base, CEI, CFI, CIK, CUSIP, Detector, Error, Errors, FIGI, FISN, IBAN, ISIN, InvalidCheckDigitError, InvalidFormatError, InvalidStructureError, LEI, Match, OCC, SEDOL, Scanner, Valoren, WKN
Constant Summary collapse
- VERSION =
'5.2.0'
Class Method Summary collapse
-
.[](key) ⇒ Class
Looks up an identifier class by its symbol key.
-
.detect(str) ⇒ Array<Symbol>
Detects all identifier types that match the given string.
-
.explain(str, types: nil) ⇒ Hash
Hash with :input and :candidates keys.
- .extract(text, types: nil) ⇒ Array<Match>
-
.identifiers ⇒ Array<Class>
Returns all registered identifier classes in load order.
-
.parse(str, types: nil, on_ambiguous: :first) ⇒ SecID::Base, ...
Depends on on_ambiguous mode.
-
.parse!(str, types: nil, on_ambiguous: :first) ⇒ SecID::Base+
Depends on on_ambiguous mode.
-
.scan(text, types: nil) {|match| ... } ⇒ Enumerator<Match>
If no block given.
-
.valid?(str, types: nil) ⇒ Boolean
Checks whether the string is a valid identifier.
Class Method Details
.[](key) ⇒ Class
Looks up an identifier class by its symbol key.
27 28 29 30 31 |
# File 'lib/sec_id.rb', line 27 def [](key) identifier_map.fetch(key) do raise ArgumentError, "Unknown identifier type: #{key.inspect}" end end |
.detect(str) ⇒ Array<Symbol>
Detects all identifier types that match the given string.
44 45 46 |
# File 'lib/sec_id.rb', line 44 def detect(str) detector.call(str) end |
.explain(str, types: nil) ⇒ Hash
Returns hash with :input and :candidates keys.
81 82 83 84 85 86 87 88 89 |
# File 'lib/sec_id.rb', line 81 def explain(str, types: nil) input = str.to_s.strip target_keys = types || identifier_list.map { |k| k.short_name.downcase.to_sym } candidates = target_keys.map do |key| instance = self[key].new(input) { type: key, valid: instance.valid?, errors: instance.errors.details } end { input: input, candidates: candidates } end |
.extract(text, types: nil) ⇒ Array<Match>
64 65 66 |
# File 'lib/sec_id.rb', line 64 def extract(text, types: nil) scan(text, types: types).to_a end |
.identifiers ⇒ Array<Class>
Returns all registered identifier classes in load order.
36 37 38 |
# File 'lib/sec_id.rb', line 36 def identifiers identifier_list.dup end |
.parse(str, types: nil, on_ambiguous: :first) ⇒ SecID::Base, ...
Returns depends on on_ambiguous mode.
96 97 98 99 100 101 102 103 |
# File 'lib/sec_id.rb', line 96 def parse(str, types: nil, on_ambiguous: :first) case on_ambiguous when :first then types.nil? ? parse_any(str) : parse_from(str, types) when :raise then parse_strict(str, types) when :all then parse_all(str, types) else raise ArgumentError, "Unknown on_ambiguous mode: #{on_ambiguous.inspect}" end end |
.parse!(str, types: nil, on_ambiguous: :first) ⇒ SecID::Base+
Returns depends on on_ambiguous mode.
111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/sec_id.rb', line 111 def parse!(str, types: nil, on_ambiguous: :first) result = parse(str, types: types, on_ambiguous: on_ambiguous) if on_ambiguous == :all raise(InvalidFormatError, (str, types)) if result.empty? return result end result || raise(InvalidFormatError, (str, types)) end |
.scan(text, types: nil) {|match| ... } ⇒ Enumerator<Match>
Returns if no block given.
73 74 75 76 |
# File 'lib/sec_id.rb', line 73 def scan(text, types: nil, &) classes = types&.map { |key| self[key] } scanner.call(text, classes: classes, &) end |
.valid?(str, types: nil) ⇒ Boolean
Checks whether the string is a valid identifier.
54 55 56 57 58 |
# File 'lib/sec_id.rb', line 54 def valid?(str, types: nil) return detect(str).any? if types.nil? types.any? { |key| self[key].valid?(str) } end |