class FluQ::Format::Base include FluQ::Mixins::Loggable extend FluQ::Mixins::Loggable # @abstract converter # @param [String] raw event string # @return [FluQ::Event] event def self.to_event(raw) end # @abstract initializer # @param [Hash] options format-specific options def initialize(options = {}) @options = options end # @abstract parse data, return events # @param [String] data # @return [Array<FluQ::Event>] events def parse(data) events = [] parse_each(data) do |raw| if event = self.class.to_event(raw) events.push(event) true else false end end events end protected # @abstract enumerator # @param [String] data # @yield over raw events # @yieldparam [Hash] raw event data def parse_each(data) end end