class SiteguardLite::CustomSignature::TextLoader
Public Class Methods
load(text)
click to toggle source
# File lib/siteguard_lite/custom_signature/text_loader.rb, line 6 def self.load(text) rules = [] rule = nil line_parser = TextLineParser.new text.split("\n").each do |line| parsed = line_parser.parse(line) # collect each line into the rules if rule&.name == parsed[:name] # This is the continuation from the previous line rule.add_condition(*parsed[:condition].fetch_values(:key, :value, :comparison_methods)) rule.exclusion_action = parsed[:exclusion_action] rule.signature = parsed[:signature] else # This line is a new rule rules << rule if rule rule = Rule.new( enable: parsed[:enable], action: parsed[:action], filter_lifetime: parsed[:filter_lifetime], name: parsed[:name], comment: parsed[:comment], exclusion_action: parsed[:exclusion_action], signature: parsed[:signature], ) rule.add_condition(*parsed[:condition].fetch_values(:key, :value, :comparison_methods)) end end rules << rule if rule rules end