mofo 0.2.14 → 0.2.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/README +5 -0
  2. data/Rakefile +1 -1
  3. data/lib/mofo/hentry.rb +29 -3
  4. data/test/hatom_test.rb +14 -0
  5. metadata +2 -2
data/README CHANGED
@@ -32,6 +32,11 @@
32
32
  >> fireball.logo
33
33
  => "http://static.flickr.com/9/buddyicons/44621776@N00.jpg?1117572751"
34
34
 
35
+ = Grab It
36
+
37
+ $ git clone git://github.com/defunkt/mofo.git
38
+ $ open http://github.com/defunkt/mofo
39
+
35
40
  = Microwhozit?
36
41
 
37
42
  Microformats are tiny little markup definitions built on top of, usually,
data/Rakefile CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'rake'
3
3
  gem 'echoe', '=1.3'
4
4
 
5
- version = '0.2.14'
5
+ version = '0.2.15'
6
6
 
7
7
  ENV['RUBY_FLAGS'] = ""
8
8
 
@@ -11,7 +11,7 @@ class HEntry < Microformat
11
11
  many :entry_content => :html, :tags => RelTag
12
12
 
13
13
  after_find do
14
- @domain = @base_url.sub /http:\/\/([^\/]+).*/, '\1'
14
+ @domain = @base_url.to_s.sub /http:\/\/([^\/]+).*/, '\1'
15
15
  @updated ||= @published if @published
16
16
  end
17
17
 
@@ -37,16 +37,42 @@ class HEntry < Microformat
37
37
  #{atom_id}
38
38
  #{atom_link}
39
39
  #{to_atom :title, @entry_title}
40
- <content type="html">#{ERB::Util.h @entry_content}</content>
41
40
  #{to_atom :updated, @updated.try(:xmlschema)}
42
- #{to_atom :published, @updated.try(:xmlschema)}
43
41
  <author>
44
42
  #{to_atom :name, @author.try(:fn)}
45
43
  #{to_atom :email, @author.try(:email)}
46
44
  </author>
45
+ <content type="html">#{ERB::Util.h @entry_content}</content>
47
46
  </entry>
48
47
  atom_entity
49
48
  end
49
+
50
+ def missing_author?
51
+ @author.nil?
52
+ end
53
+
54
+ def add_in_parent_hcard
55
+ @properties << 'author'
56
+ @author = in_parent_hcard
57
+ end
58
+
59
+ # Per spec: if the entry author is missing find the nearest in
60
+ # parent <address> element(s) with class name author
61
+ def in_parent_hcard
62
+ @in_parent_hcard ||= self.class.find_in_parent_hcard
63
+ end
64
+
65
+ def self.build_class(microformat)
66
+ hentry = super(microformat)
67
+ hentry.add_in_parent_hcard if hentry.missing_author?
68
+ hentry
69
+ end
70
+
71
+ def self.find_in_parent_hcard
72
+ author = HCard.find(:text => (@doc/"//.hentry/..//address.vcard").to_s)
73
+ raise InvalidMicroformat if @options[:strict] && author.empty?
74
+ prepare_value(author)
75
+ end
50
76
  end
51
77
 
52
78
  class Array
@@ -15,6 +15,20 @@ context "A parsed hEntry object" do
15
15
  $hentry.author.fn.should.equal "Chris"
16
16
  end
17
17
 
18
+ specify "should have an author when there are no entry author but a nearest in parent hcard" do
19
+ with_parent = HEntry.find(:first => fixture(:redflavor),
20
+ :base => 'http://journal.redflavor.com')
21
+ with_parent.author.should.be.an.instance_of HCard
22
+ with_parent.author.fn.should.equal "Eivind Uggedal"
23
+ with_parent.author.url.should.equal "http://redflavor.com"
24
+ end
25
+
26
+ specify "should be invalid without any author in strict mode" do
27
+ proc { HEntry.find(:first => fixture(:hatom_without_author),
28
+ :base => 'http://bogus.redflavor.com',
29
+ :strict => true) }.should.raise InvalidMicroformat
30
+ end
31
+
18
32
  specify "should have content" do
19
33
  $hentry.entry_content.should.be.an.instance_of String
20
34
  end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: mofo
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.14
7
- date: 2008-01-23 00:00:00 -08:00
6
+ version: 0.2.15
7
+ date: 2008-01-30 00:00:00 -08:00
8
8
  summary: mofo is a ruby microformat parser
9
9
  require_paths:
10
10
  - lib