class MessengerPigeon::Pigeon
Check and apply data matches
Public Class Methods
new(source, target, pigeon_config)
click to toggle source
# File lib/messenger_pigeon/pigeon.rb, line 5 def initialize(source, target, pigeon_config) @source = source @target = target @filters = pigeon_config[:filters] @transforms = pigeon_config[:transforms] @generators = pigeon_config[:generators] @logger = pigeon_config[:logger] end
Public Instance Methods
fly()
click to toggle source
# File lib/messenger_pigeon/pigeon.rb, line 14 def fly @source.read.each do |d| transforms :pre_filter, d generators d if filter d d = transforms :post_filter, d @target.update d @logger.call d if @logger end end self end
Private Instance Methods
filter(data)
click to toggle source
# File lib/messenger_pigeon/pigeon.rb, line 29 def filter(data) return if @filters.nil? @filters.each do |k, v| case v when Regexp return false unless data[k] =~ v when String return false unless data[k] == v when Proc return false unless v.call data[k] end end true end
generators(data)
click to toggle source
# File lib/messenger_pigeon/pigeon.rb, line 52 def generators(data) return data if @generators.nil? @generators.each do |k, v| data[k] = v.call data end data end
transforms(type, data)
click to toggle source
# File lib/messenger_pigeon/pigeon.rb, line 44 def transforms(type, data) return data if @transforms.nil? || @transforms[type].nil? @transforms[type].each do |k, v| data[k] = v.call data[k] end data end