Class: Promptmenot::Detector

Inherits:
Object
  • Object
show all
Defined in:
lib/promptmenot/detector.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(sensitivity: nil, categories: nil) ⇒ Detector

Returns a new instance of Detector.



7
8
9
10
# File 'lib/promptmenot/detector.rb', line 7

def initialize(sensitivity: nil, categories: nil)
  @sensitivity = sensitivity || Promptmenot.configuration.sensitivity
  @categories = categories
end

Instance Attribute Details

#categoriesObject (readonly)

Returns the value of attribute categories.



5
6
7
# File 'lib/promptmenot/detector.rb', line 5

def categories
  @categories
end

#sensitivityObject (readonly)

Returns the value of attribute sensitivity.



5
6
7
# File 'lib/promptmenot/detector.rb', line 5

def sensitivity
  @sensitivity
end

Instance Method Details

#detect(text) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/promptmenot/detector.rb', line 12

def detect(text)
  return Result.new(text: text.to_s) if text.nil? || text.to_s.strip.empty?

  input = text.to_s
  max = Promptmenot.configuration.max_length
  input = input[0, max] if max && input.length > max

  patterns = Promptmenot.registry.for_sensitivity_and_categories(
    @sensitivity,
    categories: @categories
  )

  all_matches = patterns.flat_map { |pattern| pattern.match(input) }
  deduped = deduplicate(all_matches)

  result = Result.new(text: input, matches: deduped)
  fire_callback(result) if result.unsafe?
  result
end