Class: Hasta::Filters

Inherits:
Object
  • Object
show all
Defined in:
lib/hasta/filters.rb

Overview

Defines filters for different S3 path prefixes

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filters) ⇒ Filters

Returns a new instance of Filters.



18
19
20
21
22
# File 'lib/hasta/filters.rb', line 18

def initialize(filters)
  @filters = filters.map { |s3_uri, regexes|
    [S3URI.parse(s3_uri), Filter.new(*regexes.map { |regex| Regexp.new(regex) }) ]
  }.sort_by { |s3_uri, regexes| s3_uri.depth }.reverse
end

Class Method Details

.from_file(file) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/hasta/filters.rb', line 10

def self.from_file(file)
  Hasta.logger.debug "Loading data filter file: #{File.expand_path(file)}"
  new(YAML.load_file(file))
rescue => ex
  raise ConfigurationError.new,
    "Failed to load filter configuration file: #{file} - #{ex.message}"
end

Instance Method Details

#for_s3_uri(target_s3_uri) ⇒ Object



24
25
26
27
28
# File 'lib/hasta/filters.rb', line 24

def for_s3_uri(target_s3_uri)
  if match = filters.find { |s3_uri, filter| target_s3_uri.start_with?(s3_uri) }
    match[1]
  end
end