Class: RTP::Record
- Inherits:
-
Object
- Object
- RTP::Record
- Defined in:
- lib/rtp-connect/record.rb
Overview
The Record class contains attributes and methods that are common for the various record types defined in the RTPConnect standard.
Direct Known Subclasses
ControlPoint, DoseTracking, ExtendedField, ExtendedPlan, Field, Plan, Prescription, SimulationField, SiteSetup
Constant Summary collapse
- NR_SURPLUS_ATTRIBUTES =
For most record types, there are no surplus (grouped) attributes.
0
Instance Attribute Summary collapse
-
#attributes ⇒ Object
readonly
An array of the record’s attributes.
-
#crc ⇒ Object
The CRC is used to validate the integrity of the content of the RTP string line.
-
#keyword ⇒ Object
The keyword defines the record type of a particular RTP string line.
Instance Method Summary collapse
-
#encode(options = {}) ⇒ String
Encodes a string from the contents of this instance.
-
#get_parent(last_parent, klass) ⇒ Object
Follows the tree of parents until the appropriate parent of the requesting record is found.
-
#initialize(keyword, min_elements, max_elements) ⇒ Record
constructor
Creates a new Record.
-
#load(string, options = {}) ⇒ Record
Sets up a record by parsing a RTPConnect string line.
-
#to_record ⇒ Record
Returns self.
-
#to_s(options = {}) ⇒ String
(also: #to_str)
Encodes the record + any hiearchy of child objects, to a properly formatted RTPConnect ascii string.
-
#values ⇒ Array<String>
Collects the values (attributes) of this instance.
Constructor Details
#initialize(keyword, min_elements, max_elements) ⇒ Record
Creates a new Record.
24 25 26 27 28 |
# File 'lib/rtp-connect/record.rb', line 24 def initialize(keyword, min_elements, max_elements) @keyword = keyword @min_elements = min_elements @max_elements = max_elements end |
Instance Attribute Details
#attributes ⇒ Object (readonly)
An array of the record’s attributes.
12 13 14 |
# File 'lib/rtp-connect/record.rb', line 12 def attributes @attributes end |
#crc ⇒ Object
The CRC is used to validate the integrity of the content of the RTP string line.
16 17 18 |
# File 'lib/rtp-connect/record.rb', line 16 def crc @crc end |
#keyword ⇒ Object
The keyword defines the record type of a particular RTP string line.
14 15 16 |
# File 'lib/rtp-connect/record.rb', line 14 def keyword @keyword end |
Instance Method Details
#encode(options = {}) ⇒ String
Encodes a string from the contents of this instance.
This produces the full record string line, including a computed CRC checksum.
47 48 49 50 51 52 53 54 |
# File 'lib/rtp-connect/record.rb', line 47 def encode(={}) encoded_values = values.collect {|v| v && v.encode('ISO8859-1')} encoded_values = discard_unsupported_attributes(encoded_values, ) if [:version] content = CSV.generate_line(encoded_values, force_quotes: true, row_sep: '') + "," checksum = content.checksum # Complete string is content + checksum (in double quotes) + carriage return + line feed return (content + checksum.to_s.wrap + "\r\n").encode('ISO8859-1') end |
#get_parent(last_parent, klass) ⇒ Object
Follows the tree of parents until the appropriate parent of the requesting record is found.
61 62 63 64 65 66 67 |
# File 'lib/rtp-connect/record.rb', line 61 def get_parent(last_parent, klass) if last_parent.is_a?(klass) return last_parent else return last_parent.get_parent(last_parent.parent, klass) end end |
#load(string, options = {}) ⇒ Record
Sets up a record by parsing a RTPConnect string line.
86 87 88 89 90 91 92 93 |
# File 'lib/rtp-connect/record.rb', line 86 def load(string, ={}) # Extract processed values: values = string.to_s.values([:repair]) raise ArgumentError, "Invalid argument 'string': Expected at least #{@min_elements} elements for #{@keyword}, got #{values.length}." if values.length < @min_elements RTP.logger.warn "The number of given elements (#{values.length}) exceeds the known number of data elements for this record (#{@max_elements}). This may indicate an invalid string record or that the RTP format has recently been expanded with new elements." if values.length > @max_elements self.send(:set_attributes, values) self end |
#to_record ⇒ Record
Returns self.
99 100 101 |
# File 'lib/rtp-connect/record.rb', line 99 def to_record self end |
#to_s(options = {}) ⇒ String Also known as: to_str
Encodes the record + any hiearchy of child objects, to a properly formatted RTPConnect ascii string.
110 111 112 113 114 115 116 117 |
# File 'lib/rtp-connect/record.rb', line 110 def to_s(={}) str = encode() children.each do |child| # Note that the extended plan record was introduced in Mosaiq 2.5. str += child.to_s() unless child.class == ExtendedPlan && [:version].to_f < 2.5 end str end |