kigster/turnstile-rb

View on GitHub
lib/turnstile/collector/formats/delimited_matcher.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Turnstile
  module Collector
    module Formats
      module DelimitedMatcher
        class << self
          attr_accessor :marker
        end

        self.marker = 'x-turnstile'.freeze

        # Expects the form of '..... x-turnstile|desktop|10.10.2.4|1234456   ....'
        def delimited_matcher(delimiter = '|', match_marker = ::Turnstile::Collector::Formats::DelimitedMatcher.marker)
          @default_matcher ||= RegexpMatcher.new(%r{#{match_marker}},
                                                 ->(line) {
                                             marker = line.split(/ /).find { |w| w =~ /^#{match_marker}/ }
                                             if marker
                                               list = marker.split(delimiter)
                                               if list && list.size == 4
                                                 return(list[1..-1].join(':'))
                                               end
                                             end
                                             nil
                                           })
        end
      end

    end
  end
end