-
Notifications
You must be signed in to change notification settings - Fork 8
/
sniffers.rb
32 lines (28 loc) · 1.03 KB
/
sniffers.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
module Sniffles
module Sniffers
def self.use(response_body, name)
file = Dir.glob(File.dirname(__FILE__) + "/../../lib/sniffles/sniffers/**/#{name.to_s}.rb").first
class_name = get_sniffer_class(name.to_s)
require File.expand_path(file)
eval("Sniffles::Sniffers::#{class_name}.new(response_body).output")
end
def self.list_all(group = "**")
Dir.glob(File.dirname(__FILE__) + "/../../lib/sniffles/sniffers/#{group}/*.rb").collect do |sniffer|
sniffer.match(/sniffers\/[a-z]+\/(.*)\.rb$/)[1].to_sym
end
end
def self.list_groups
Dir.glob(File.dirname(__FILE__) + "/../../lib/sniffles/sniffers/**").collect { |group|
group.match(/sniffers\/(.*)$/)[1].to_sym
}
end
def self.list_all_by_group
output = {}
list_groups.each { |group| output[group] = list_all(group).to_a }
output
end
def self.get_sniffer_class(name)
name.gsub(/\/(.?)/) { "::#{ $1.upcase }" }.gsub(/(?:^|[_-])(.)/) { $1.upcase }
end
end
end