summaryrefslogtreecommitdiff
path: root/fake-service/lib/smail/search/string_match.rb
diff options
context:
space:
mode:
Diffstat (limited to 'fake-service/lib/smail/search/string_match.rb')
-rw-r--r--fake-service/lib/smail/search/string_match.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/fake-service/lib/smail/search/string_match.rb b/fake-service/lib/smail/search/string_match.rb
new file mode 100644
index 00000000..fc17ab59
--- /dev/null
+++ b/fake-service/lib/smail/search/string_match.rb
@@ -0,0 +1,37 @@
+module Smail
+ class Search
+ class StringMatch
+ attr_reader :str
+ def initialize(data, quoted=false)
+ @str = data
+ @quoted = quoted
+ @data = Regexp.new(Regexp.quote(self.match_string), Regexp::IGNORECASE)
+ @exact_match = /^#{@data}$/
+ end
+
+ def match_string
+ if @quoted
+ @str[1..-2]
+ else
+ @str
+ end
+ end
+
+ def to_s
+ "String(#@data)"
+ end
+
+ def match_string?(str)
+ Array(str).any? { |ff| !!(ff[@data]) }
+ end
+
+ def match_exact_string?(str)
+ Array(str).any? { |ff| @exact_match.match ff }
+ end
+
+ def match?(mail)
+ match_string? [mail.to, mail.from, mail.subject, mail.body]
+ end
+ end
+ end
+end