Class: Openphar::Migrators::JP::Classifier
- Inherits:
-
Object
- Object
- Openphar::Migrators::JP::Classifier
- Defined in:
- lib/openphar/migrators/jp/classifier.rb
Overview
Single dispatch point mapping a JP record's type string to the correct Openphar::Models::JP::* subclass.
JP's HTML parser already produces a type string (e.g., "CrudeDrugMonograph"); the classifier trusts it and maps to the JP-specific subclass. Falls back to JP::Monograph for unknown type strings.
MECE invariant: every type string in TYPE_MAP classifies to exactly one subclass; every other input falls back to the base.
Constant Summary collapse
- TYPE_MAP =
{ 'CrudeDrugMonograph' => 'CrudeDrug', 'ChemicalDrugMonograph' => 'ChemicalDrug', 'FormulationMonograph' => 'Formulation', 'BiologicalSubstanceMonograph' => 'Biological', 'VitaminMonograph' => 'Vitamin', 'AminoAcidMonograph' => 'AminoAcid', 'MineralSubstanceMonograph' => 'Mineral', }.freeze
- FINAL_FALLBACK =
'Monograph'.freeze
Class Method Summary collapse
- .all_types ⇒ Object
-
.classify(type_string:, name: nil) ⇒ Class
A subclass of Openphar::Models::JP::Monograph.
Class Method Details
.all_types ⇒ Object
39 40 41 42 43 44 |
# File 'lib/openphar/migrators/jp/classifier.rb', line 39 def all_types %i[CrudeDrug ChemicalDrug Formulation Biological Excipient Vitamin AminoAcid Mineral].map do |k| Openphar::Models::JP.const_get(k) end end |
.classify(type_string:, name: nil) ⇒ Class
Returns a subclass of Openphar::Models::JP::Monograph.
34 35 36 37 |
# File 'lib/openphar/migrators/jp/classifier.rb', line 34 def classify(type_string:, name: nil) klass_name = TYPE_MAP.fetch(type_string, FINAL_FALLBACK) Openphar::Models::JP.const_get(klass_name) end |