Class: Cpr::Row
Direct Known Subclasses
Adressematch::Req1100, Adressematch::Req1200, Adressematch::Req1300, Adressematch::Req1400, Adressematch::Resp000, Adressematch::Resp001, Adressematch::Resp001A, Adressematch::Resp002, Adressematch::Resp003, Adressematch::Resp004, Adressematch::Resp005, Adressematch::Resp010, Adressematch::Resp011, Adressematch::Resp012, Adressematch::Resp013, Adressematch::Resp901, Adressematch::Resp902, Adressematch::Resp903, Adressematch::Resp910, Adressematch::Resp998, Adressematch::Resp999
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Kunderefnr
#birthday, #birthday_century, #pnr, #pnr_assigned_digits
Constructor Details
#initialize(data = nil) ⇒ Row
Returns a new instance of Row.
7
8
9
10
11
12
13
|
# File 'lib/cpr/row.rb', line 7
def initialize(data = nil)
if data
@data = data
else
@data = self.class.fill
end
end
|
Instance Attribute Details
#data ⇒ Object
Returns the value of attribute data.
6
7
8
|
# File 'lib/cpr/row.rb', line 6
def data
@data
end
|
Class Method Details
.create(fields_with_vals = {}) ⇒ Object
36
37
38
39
40
41
42
|
# File 'lib/cpr/row.rb', line 36
def create(fields_with_vals = {})
instance = new
fields_with_vals.each do |key,val|
instance[key] = val
end
instance
end
|
.field(fieldname, type, range, opts = {}) ⇒ Object
44
45
46
47
48
49
50
|
# File 'lib/cpr/row.rb', line 44
def field(fieldname, type, range, opts = {})
@fields ||= []
@fields_map ||= {}
check_contiguous!(fieldname, range)
@fields << Cpr::Field.create_type(type, fieldname, range, opts)
@fields_map[fieldname] = @fields.last
end
|
.field_by_name(fieldname) ⇒ Object
56
57
58
|
# File 'lib/cpr/row.rb', line 56
def field_by_name(fieldname)
@fields_map[fieldname] or raise "No field by name '#{fieldname}"
end
|
.fields ⇒ Object
52
53
54
|
# File 'lib/cpr/row.rb', line 52
def fields
@fields
end
|
.fill ⇒ Object
64
65
66
|
# File 'lib/cpr/row.rb', line 64
def fill
@fields.map(&:fill).join
end
|
.inherited(subclass) ⇒ Object
79
80
81
82
|
# File 'lib/cpr/row.rb', line 79
def inherited(subclass)
@subclasses ||= []
@subclasses << subclass
end
|
.length ⇒ Object
60
61
62
|
# File 'lib/cpr/row.rb', line 60
def length
@fields.last.range.last + 1 unless @fields.empty?
end
|
.parse(str) ⇒ Object
73
74
75
76
77
|
# File 'lib/cpr/row.rb', line 73
def parse(str)
load_subclasses if @subclasses.nil?
parser = @subclasses.find {|subclass| subclass.parses? str }
parser.new(str) if parser
end
|
.parses?(str) ⇒ Boolean
68
69
70
71
|
# File 'lib/cpr/row.rb', line 68
def parses?(str)
f = @fields_map['Recordtype']
f && str.start_with?(f.fill) && str.length == length
end
|
.title(title) ⇒ Object
32
33
34
|
# File 'lib/cpr/row.rb', line 32
def title(title)
@title = title
end
|
Instance Method Details
#[](fieldname) ⇒ Object
15
16
17
|
# File 'lib/cpr/row.rb', line 15
def [](fieldname)
self.class.field_by_name(fieldname).read(@data)
end
|
#[]=(fieldname, value) ⇒ Object
19
20
21
|
# File 'lib/cpr/row.rb', line 19
def []=(fieldname, value)
self.class.field_by_name(fieldname).write(@data, value)
end
|
#content ⇒ Object
23
24
25
26
27
28
29
|
# File 'lib/cpr/row.rb', line 23
def content
h = {}
self.class.fields.each do |field|
h[field.name] = self[field.name]
end
h
end
|