./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