Class: ULS::Codes::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/uls/codes/base.rb

Overview

A base class to handle the various codes/descriptions that the ULS database uses throughout their records.

Direct Known Subclasses

ApplicantType, EntityType, LicenseStatus, Status

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(code = nil) ⇒ Base

Returns a new instance of Base.

Raises:

  • (ArgumentError)


30
31
32
33
34
35
36
# File 'lib/uls/codes/base.rb', line 30

def initialize(code = nil)
  return if code.nil?

  raise ArgumentError, "'#{code}' is an invalid code." unless self.class.possible_codes.include?(code)

  self.code = code
end

Instance Attribute Details

#codeObject

Returns the value of attribute code.



6
7
8
# File 'lib/uls/codes/base.rb', line 6

def code
  @code
end

Class Method Details

.define_uls_code(code, description:) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/uls/codes/base.rb', line 9

def define_uls_code(code, description:)
  possible_codes[code] = description

  # Takes the description and turns it into a question mark
  # method for quick testing.  For example:
  #
  # 'Active' -> :active?
  # 'Pending Legal Status' -> :pending_legal_status?
  question_method = description.downcase
  question_method.tr!(' ', '_')
  question_method += '?'
  define_method question_method.to_sym do
    self.code.eql?(code)
  end
end

.possible_codesObject



25
26
27
# File 'lib/uls/codes/base.rb', line 25

def possible_codes
  @possible_codes ||= {}
end

Instance Method Details

#descriptionObject



38
39
40
# File 'lib/uls/codes/base.rb', line 38

def description
  self.class.possible_codes[code] unless code.nil?
end