class CnabRb::Format::Field
Attributes
date_format[RW]
default[RW]
picture[RW]
pos_end[RW]
pos_start[RW]
Public Class Methods
new(params)
click to toggle source
# File lib/cnab_rb/format/field.rb, line 7 def initialize(params) @pos_start = params[:pos].begin @pos_end = params[:pos].end @picture = Picture.new(params[:picture]) @default = params[:default] @date_format = params[:date_format] end
Public Instance Methods
decode(value)
click to toggle source
# File lib/cnab_rb/format/field.rb, line 36 def decode(value) decoded = @picture.decode(value) unless @date_format.nil? || decoded == 0 DateTime.strptime(decoded.to_s.rjust(length, '0'), @date_format) else decoded end end
encode(value)
click to toggle source
# File lib/cnab_rb/format/field.rb, line 29 def encode(value) if @date_format && value.respond_to?('strftime') value = value.strftime(@date_format) end @picture.encode(value) end
length()
click to toggle source
# File lib/cnab_rb/format/field.rb, line 19 def length @pos_end - @pos_start + 1 end
range()
click to toggle source
# File lib/cnab_rb/format/field.rb, line 15 def range @pos_start..@pos_end end
validate!()
click to toggle source
# File lib/cnab_rb/format/field.rb, line 23 def validate! if length != @picture.length raise CnabRb::Error.new("Invalid picture length between #{@pos_start} and #{@pos_end}") end end