class PS2Format::Record

Compoents (Header, Operation and Footer) are validatable and delegate method calls to an OpenStruct containing the component's metadata

Constants

ACCOUNT_STATUS
FORMAT
RECORD_STATUS
REFERENCE_FIELD_SIZE
TRANSFER_OPCODE

Attributes

errors[R]

The error list

Public Class Methods

new(metadata) click to toggle source
Calls superclass method
# File lib/PS2Format/record.rb, line 23
def initialize(metadata)
  super(OpenStruct.new(metadata))
  @errors = []
end

Protected Class Methods

date_to_str(date) click to toggle source
# File lib/PS2Format/record.rb, line 105
def self.date_to_str(date)
  date.strftime('%Y%m%d')
end
pre_process_nib(nib) click to toggle source
# File lib/PS2Format/record.rb, line 120
def self.pre_process_nib(nib)
  String(nib).delete(' ')
             .delete('-')
             .delete('.')
             .rjust(21, '0')
end
remove_accents(text) click to toggle source
# File lib/PS2Format/record.rb, line 127
def self.remove_accents(text)
  text = text.to_s
  text = text.gsub(/[á|à|ã|â|ä]/, 'a').gsub(/(é|è|ê|ë)/, 'e').gsub(/(í|ì|î|ï)/, 'i').gsub(/(ó|ò|õ|ô|ö)/, 'o').gsub(/(ú|ù|û|ü)/, 'u')
  text = text.gsub(/(Á|À|Ã|Â|Ä)/, 'A').gsub(/(É|È|Ê|Ë)/, 'E').gsub(/(Í|Ì|Î|Ï)/, 'I').gsub(/(Ó|Ò|Õ|Ô|Ö)/, 'O').gsub(/(Ú|Ù|Û|Ü)/, 'U')
  text = text.gsub(/ñ/, 'n').gsub(/Ñ/, 'N')
  text = text.gsub(/ç/, 'c').gsub(/Ç/, 'C')
  text
end
str_to_date(str) click to toggle source
# File lib/PS2Format/record.rb, line 109
def self.str_to_date(str)
  Date.strptime(str, '%Y%m%d')
end
valid_date?(str) click to toggle source
# File lib/PS2Format/record.rb, line 113
def self.valid_date?(str)
  str_to_date(str)
  true
rescue ArgumentError
  false
end

Public Instance Methods

account_status() click to toggle source
# File lib/PS2Format/record.rb, line 67
def account_status
  metadata.account_status
end
account_status=(status) click to toggle source
# File lib/PS2Format/record.rb, line 71
def account_status=(status)
  metadata.account_status = status
end
data() click to toggle source

Raw component data

# File lib/PS2Format/record.rb, line 84
def data
  metadata.marshal_dump.values.map(&:to_s).reduce('', :<<)
end
date=(date) click to toggle source
# File lib/PS2Format/record.rb, line 57
def date=(date)
  if date.is_a? Date
    metadata.date = date_to_str(date)
  end

  if date.is_a? String
    metadata.date = date
  end
end
format() click to toggle source
# File lib/PS2Format/record.rb, line 41
def format
  metadata.format
end
invalid?() click to toggle source
# File lib/PS2Format/record.rb, line 37
def invalid?
  not(valid?)
end
operation_type() click to toggle source
# File lib/PS2Format/record.rb, line 49
def operation_type
  metadata.operation_type
end
operation_type=(operation_type) click to toggle source
# File lib/PS2Format/record.rb, line 53
def operation_type=(operation_type)
  metadata.operation_type = operation_type
end
ordering_nib() click to toggle source
# File lib/PS2Format/record.rb, line 45
def ordering_nib
  metadata.ordering_nib
end
record_status() click to toggle source
# File lib/PS2Format/record.rb, line 75
def record_status
  metadata.record_status 
end
record_status=(status) click to toggle source
# File lib/PS2Format/record.rb, line 79
def record_status=(status)
  metadata.record_status = status
end
valid?() click to toggle source

Validates the component Inheriting classes must implement validate and use Componenet#add_error if errors found

# File lib/PS2Format/record.rb, line 31
def valid?
  @errors.clear
  validate
  @errors.empty?
end

Protected Instance Methods

add_account_status_error(key, values = {}) click to toggle source
# File lib/PS2Format/record.rb, line 93
def add_account_status_error(key, values = {})
  error("status_#{key}", 'ps2.account_statuses', values)
end
add_error(key, values = {}) click to toggle source
# File lib/PS2Format/record.rb, line 89
def add_error(key, values = {})
  error(key, 'ps2.errors', values)
end
add_status_error(key, values = {}) click to toggle source
# File lib/PS2Format/record.rb, line 97
def add_status_error(key, values = {})
  error("status_#{key}", 'ps2.statuses', values)
end
error(key, scope, values = {}) click to toggle source
# File lib/PS2Format/record.rb, line 101
def error(key, scope, values = {})
  @errors << I18n.t(key.to_sym, values.merge(scope: scope))
end

Private Instance Methods

ensure_options(options) click to toggle source
# File lib/PS2Format/record.rb, line 138
def ensure_options(options)

  raise PS2Format::InvalidOperationTypeException.new I18n.t("ps2.exceptions.invalid_operation_type") if operation_type.nil?
  raise PS2Format::InvalidNIBException.new I18n.t("ps2.exceptions.invalid_nib") if ordering_nib.nil? or ordering_nib.size != 19

end