= Thunderbird Filterregeln für Apple Mail aufbereiten
Thunderbird Regeln finden:
$ find ~/.thunderbird -name msgFilterRules.dat
Apple Mail Regeln finden:
$ find ~/Library/Mail -name MessageRules.plist
Ein sehr, sehr unfertiges Fragment:
#!/usr/bin/ruby -w require 'rexml/document' # $ sudo gem install uuid -v 2.0.0 require 'uuid' module Mail module Filter class Rule end end module Apple # Add a key-value pair to a plist-dictionary def Apple.add parent, key, type, value k = REXML::Element.new 'key' k.text = key parent << k k = REXML::Element.new type.to_s k.text = "#{value}" if !value.nil? parent << k return k end def Apple.create_rules factory_rules = true dst = REXML::Document.new() dst << REXML::XMLDecl.new('1.0','utf-8') dst << REXML::DocType.new('plist', 'PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"') plist = REXML::Element.new 'plist' plist.add_attribute 'version', '1.0' dst << plist dict = REXML::Element.new 'dict' plist << dict array = Apple.add(dict, :rules, :array, nil) Apple.add dict, :version, :integer, 2 if factory_rules end return dst end end module ThunderBird def ThunderBird.each_rule src kv_pat = /([^=]+)="([^"]+)"/ tmp={} src.each_line do |l| m = kv_pat.match l raise "Couldn't match line [#{l}]" if m.nil? if m[1] == 'name' yield tmp if !tmp[name].nil? tmp.clear end tmp[m[1].to_sym] = m[2] end yield tmp if !tmp[name].nil? end def ThunderBird.rules_to_apple_mail src, dst=nil array = nil if dst.nil? dst = Apple.create_rules else raise 'TODO find and assign \'array\'' end ThunderBird.each_rule(src) do |rule| puts rule[:rule] end dst end end end src=File.open('/home/m/.thunderbird/....default/Mail/.../msgFilterRules.dat') puts Mail::ThunderBird.rules_to_apple_mail(src) # file:///usr/lib64/ruby/gems/1.8/doc/uuid-2.0.0/rdoc/index.html #uuid = UUID.new # 10.times do # p uuid.generate # end