From 6c168aaffb37c62dee6c895a22e240e5552be669 Mon Sep 17 00:00:00 2001 From: George Claghorn Date: Wed, 26 Dec 2018 16:18:42 -0500 Subject: Nest Action Mailbox classes in the API docs --- actionmailbox/lib/action_mailbox/router/route.rb | 62 ++++++++++++------------ 1 file changed, 32 insertions(+), 30 deletions(-) (limited to 'actionmailbox/lib/action_mailbox/router/route.rb') diff --git a/actionmailbox/lib/action_mailbox/router/route.rb b/actionmailbox/lib/action_mailbox/router/route.rb index adb9f94c1a..b681eb7ea8 100644 --- a/actionmailbox/lib/action_mailbox/router/route.rb +++ b/actionmailbox/lib/action_mailbox/router/route.rb @@ -1,40 +1,42 @@ # frozen_string_literal: true -# Encapsulates a route, which can then be matched against an inbound_email and provide a lookup of the matching -# mailbox class. See examples for the different route addresses and how to use them in the `ActionMailbox::Base` -# documentation. -class ActionMailbox::Router::Route - attr_reader :address, :mailbox_name +module ActionMailbox + # Encapsulates a route, which can then be matched against an inbound_email and provide a lookup of the matching + # mailbox class. See examples for the different route addresses and how to use them in the `ActionMailbox::Base` + # documentation. + class Router::Route + attr_reader :address, :mailbox_name - def initialize(address, to:) - @address, @mailbox_name = address, to + def initialize(address, to:) + @address, @mailbox_name = address, to - ensure_valid_address - end + ensure_valid_address + end - def match?(inbound_email) - case address - when :all - true - when String - inbound_email.mail.recipients.any? { |recipient| address.casecmp?(recipient) } - when Regexp - inbound_email.mail.recipients.any? { |recipient| address.match?(recipient) } - when Proc - address.call(inbound_email) - else - address.match?(inbound_email) + def match?(inbound_email) + case address + when :all + true + when String + inbound_email.mail.recipients.any? { |recipient| address.casecmp?(recipient) } + when Regexp + inbound_email.mail.recipients.any? { |recipient| address.match?(recipient) } + when Proc + address.call(inbound_email) + else + address.match?(inbound_email) + end end - end - def mailbox_class - "#{mailbox_name.to_s.camelize}Mailbox".constantize - end + def mailbox_class + "#{mailbox_name.to_s.camelize}Mailbox".constantize + end - private - def ensure_valid_address - unless [ Symbol, String, Regexp, Proc ].any? { |klass| address.is_a?(klass) } || address.respond_to?(:match?) - raise ArgumentError, "Expected a Symbol, String, Regexp, Proc, or matchable, got #{address.inspect}" + private + def ensure_valid_address + unless [ Symbol, String, Regexp, Proc ].any? { |klass| address.is_a?(klass) } || address.respond_to?(:match?) + raise ArgumentError, "Expected a Symbol, String, Regexp, Proc, or matchable, got #{address.inspect}" + end end - end + end end -- cgit v1.2.3