# File lib/puppet/reports/tagmail.rb, line 73
 73:     def parse(text)
 74:         taglists = []
 75:         text.split("\n").each do |line|
 76:             taglist = emails = nil
 77:             case line.chomp
 78:             when /^\s*#/; next
 79:             when /^\s*$/; next
 80:             when /^\s*(.+)\s*:\s*(.+)\s*$/
 81:                 taglist = $1
 82:                 emails = $2.sub(/#.*$/,'')
 83:             else
 84:                 raise ArgumentError, "Invalid tagmail config file"
 85:             end
 86: 
 87:             pos = []
 88:             neg = []
 89:             taglist.sub(/\s+$/,'').split(/\s*,\s*/).each do |tag|
 90:                 unless tag =~ /^!?[-\w]+$/
 91:                     raise ArgumentError, "Invalid tag %s" % tag.inspect
 92:                 end
 93:                 case tag
 94:                 when /^\w+/; pos << tag
 95:                 when /^!\w+/; neg << tag.sub("!", '')
 96:                 else
 97:                     raise Puppet::Error, "Invalid tag '%s'" % tag
 98:                 end
 99:             end
100: 
101:             # Now split the emails
102:             emails = emails.sub(/\s+$/,'').split(/\s*,\s*/)
103:             taglists << [emails, pos, neg]
104:         end
105:         return taglists
106:     end