class Fit4Ruby::GlobalFitMessageList
Public Class Methods
new(&block)
click to toggle source
# File lib/fit4ruby/GlobalFitMessage.rb, line 354 def initialize(&block) @current_message = nil @messages = {} instance_eval(&block) if block_given? end
Public Instance Methods
[](number)
click to toggle source
# File lib/fit4ruby/GlobalFitMessage.rb, line 408 def [](number) @messages[number] end
alt_field(number, ref_field, &block)
click to toggle source
# File lib/fit4ruby/GlobalFitMessage.rb, line 401 def alt_field(number, ref_field, &block) unless @current_message raise "You must define a message first" end @current_message.alt_field(number, ref_field, &block) end
each() { |message| ... }
click to toggle source
# File lib/fit4ruby/GlobalFitMessage.rb, line 367 def each @messages.each_value do |message| yield(message) end end
field(number, type, name, opts = {})
click to toggle source
# File lib/fit4ruby/GlobalFitMessage.rb, line 394 def field(number, type, name, opts = {}) unless @current_message raise "You must define a message first" end @current_message.field(number, type, name, opts) end
find_by_name(name)
click to toggle source
# File lib/fit4ruby/GlobalFitMessage.rb, line 390 def find_by_name(name) @messages.values.find { |m| m.name == name } end
message(number, name)
click to toggle source
# File lib/fit4ruby/GlobalFitMessage.rb, line 360 def message(number, name) if @messages.include?(number) raise "Message #{number} has already been defined" end @messages[number] = @current_message = GlobalFitMessage.new(name, number) end
write(io)
click to toggle source
# File lib/fit4ruby/GlobalFitMessage.rb, line 373 def write(io) # The FIT file supports more than 16 global message types. But only 16 # can be declared as local message types at any point of time. If there # are more then 16 messages, the current subset must be declared before # it's being used in the data records of the file. # Since we currently have 16 or less message types, we just write them # all upfront before the data records. if @messages.length > 16 raise 'Cannot support more than 16 message types!' end local_message_type = 0 @messages.each do |number, message| message.write(io, local_message_type) end end