Module: ImapMogura::RulesParser

Defined in:
lib/imap_mogura/rules_parser.rb,
lib/imap_mogura/rules_parser/errors.rb

Defined Under Namespace

Classes: Error, ParseError

Class Method Summary collapse

Class Method Details

.parse(rules) ⇒ Object

Raises:



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/imap_mogura/rules_parser.rb', line 13

def parse(rules)
  raise ParseError, "rules is required to be just only one array" unless rules.is_a?(Array)

  rules.map do |item|
    rule_set = RuleSet.new(item)

    rule_set.parsed_rule = parse_rule(rule_set.raw_rule)

    rule_set
  rescue ArgumentError
    raise ParseError,
          "keywords \"destination\" and \"rule\" are required but some keywords are not specified or unknown keywords are specified. specified keywords: #{item.keys.map do |k|
            "\"#{k}\""
          end.join(", ")}"
  end
end