./lib/mofo/xfn.rb in mofo-0.2.9 vs ./lib/mofo/xfn.rb in mofo-0.2.10

- old
+ new

@@ -1,9 +1,30 @@ $:.unshift 'lib' require 'microformat' class XFN < Microformat + @@valid_relations = %w( + contact + acquaintance + friend + met + co-worker + colleague + co-resident + neighbor + child + parent + sibling + spouse + kin + muse + crush + date + sweetheart + me + ) + class Link < OpenStruct def initialize(*args) super def relation.has?(value) is_a?(Array) ? include?(value) : self == value @@ -33,12 +54,18 @@ alias :find_every :find_occurences end def initialize(doc) @links = doc.search("a[@rel]").map do |rl| - relation = rl[:rel].include?(' ') ? rl[:rel].split(' ') : rl[:rel] + relation = rl[:rel].split(' ') + + # prune invalid relations + relation.each { |r| relation.delete(r) unless @@valid_relations.include? r } + relation = relation.first if relation.size == 1 + next if relation.empty? + Link.new(:name => rl.innerHTML, :link => rl[:href], :relation => relation) - end + end.compact end def relations @relations ||= @links.map { |l| l.relation } end