class Franz::InputConfig
Attributes
configs[R]
Public Class Methods
new(configs, logger=nil)
click to toggle source
# File lib/franz/input_config.rb, line 5 def initialize configs, logger=nil @logger = logger || Logger.new(STDOUT) @configs = configs @configs.map! do |c| normalized_config c end @types = Hash.new @drop = Hash.new @keep = Hash.new end
Public Instance Methods
config(path)
click to toggle source
# File lib/franz/input_config.rb, line 16 def config path t = type(path) configs.select { |c| c[:type] == t }.shift end
drop?(path, message)
click to toggle source
# File lib/franz/input_config.rb, line 34 def drop? path, message patterns = drops_for(path) return true if patterns.nil? return false if patterns.empty? apply_patterns patterns, message end
json?(path)
click to toggle source
# File lib/franz/input_config.rb, line 21 def json? path config(path)[:json?] rescue false end
keep?(path, message)
click to toggle source
# File lib/franz/input_config.rb, line 27 def keep? path, message patterns = keeps_for(path) return true if patterns.nil? return true if patterns.empty? apply_patterns patterns, message end
type(path)
click to toggle source
# File lib/franz/input_config.rb, line 41 def type path @types.fetch path rescue KeyError configs.each do |config| type = config[:type] if config[:includes].any? { |glob| included = File.fnmatch? glob, path, File::FNM_EXTGLOB excludes = !config[:excludes].nil? excluded = excludes && config[:excludes].any? { |exlude| File.fnmatch? exlude, File::basename(path), File::FNM_EXTGLOB } included && !excluded } unless type.nil? @types[path] = type return type end end log.warn \ event: 'type unknown', file: path @types[path] = nil end
Private Instance Methods
apply_patterns(patterns, message)
click to toggle source
# File lib/franz/input_config.rb, line 82 def apply_patterns patterns, message return true if patterns.nil? patterns.each do |pattern| return true if message =~ pattern end return false end
drops_for(path)
click to toggle source
# File lib/franz/input_config.rb, line 90 def drops_for path patterns_for path, :drop, @drop end
keeps_for(path)
click to toggle source
# File lib/franz/input_config.rb, line 94 def keeps_for path patterns_for path, :keep, @keep end
log()
click to toggle source
# File lib/franz/input_config.rb, line 66 def log ; @logger end
normalized_config(config)
click to toggle source
# File lib/franz/input_config.rb, line 68 def normalized_config config config[:keep] = realize_regexps config[:keep] config[:drop] = realize_regexps config[:drop] config end
patterns_for(path, kind, memo)
click to toggle source
# File lib/franz/input_config.rb, line 98 def patterns_for path, kind, memo memo.fetch path rescue KeyError c = config(path) k = c ? c[kind] : [] memo[path] = k end
realize_regexps(ps)
click to toggle source
# File lib/franz/input_config.rb, line 74 def realize_regexps ps return [] if ps.nil? ps = ps.is_a?(Array) ? ps : [ ps ] ps.map do |pattern| Regexp.new pattern end end