class Fit4Ruby::FitDefinitionField
The FitDefinitionField
models the part of the FIT file that contains the template definition for a field of a FitMessageRecord
. It should match the corresponding definition in GlobalFitMessages. In case we don’t have a known entry in GlobalFitMessages we can still read the file since we know the exact size of the binary records.
Public Instance Methods
init()
click to toggle source
# File lib/fit4ruby/FitDefinitionField.rb, line 39 def init @global_message_number = parent.parent.global_message_number.snapshot @global_message_definition = GlobalFitMessages[@global_message_number] field_number = field_definition_number.snapshot if @global_message_definition && (field = @global_message_definition.fields_by_number[field_number]) @name = field.respond_to?('name') ? field.name : "choice_#{field_number}" @type = field.respond_to?('type') ? field.type : nil if @type && (td = FIT_TYPE_DEFS[checked_base_type_number]) && td[0] != @type Log.warn "#{@global_message_number}:#{@name} must be of type " + "#{@type}, not #{td[0]}" end else @name = "field#{field_definition_number.snapshot}" @type = nil Log.debug { "Unknown field number #{field_definition_number} " + "in global message #{@global_message_number}" } end end
name()
click to toggle source
# File lib/fit4ruby/FitDefinitionField.rb, line 62 def name init unless @global_message_number @name end
to_machine(value)
click to toggle source
# File lib/fit4ruby/FitDefinitionField.rb, line 67 def to_machine(value) init unless @global_message_number value = nil if value == undefined_value field_number = field_definition_number.snapshot if value.kind_of?(Array) ary = [] value.each { |v| ary << to_machine(v) } return ary else if @global_message_definition && (field = @global_message_definition. fields_by_number[field_number]) && field.respond_to?('to_machine') return field.to_machine(value) else return value end end end
to_s(value)
click to toggle source
# File lib/fit4ruby/FitDefinitionField.rb, line 88 def to_s(value) init unless @global_message_number value = nil if value == undefined_value if value.kind_of?(Array) s = '[ ' value.each { |v| s << to_s(v) + ' ' } s + ']' else field_number = field_definition_number.snapshot if @global_message_definition && (field = @global_message_definition.fields_by_number[field_number]) field.to_s(value) else "[#{value.to_s}]" end end end