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