Class: SiteguardLite::CustomSignature::TextLoader

Inherits:
Object
  • Object
show all
Defined in:
lib/siteguard_lite/custom_signature/text_loader.rb

Class Method Summary collapse

Class Method Details

.load(text) ⇒ Object



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
33
34
35
36
37
38
39
# 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