exempla-atomic 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION.yml +1 -1
- data/lib/atomic/entry.rb +28 -8
- metadata +1 -1
data/VERSION.yml
CHANGED
data/lib/atomic/entry.rb
CHANGED
@@ -10,7 +10,14 @@ module Atomic
|
|
10
10
|
|
11
11
|
def parse(data)
|
12
12
|
entry = new
|
13
|
-
doc = data.kind_of?(Nokogiri::XML::Element) ? data : Nokogiri.XML(data)
|
13
|
+
doc = data.kind_of?(Nokogiri::XML::Element) ? data : Nokogiri.XML(data, nil, nil, Nokogiri::XML::PARSE_RECOVER + Nokogiri::XML::PARSE_NOBLANKS)
|
14
|
+
|
15
|
+
# puts("================================================================")
|
16
|
+
# puts("XML")
|
17
|
+
# puts("================================================================")
|
18
|
+
# puts(doc.inspect)
|
19
|
+
# puts("================================================================")
|
20
|
+
|
14
21
|
|
15
22
|
entry_node = doc.xpath('//atom:entry', NAMESPACES).first
|
16
23
|
|
@@ -21,22 +28,35 @@ module Atomic
|
|
21
28
|
|
22
29
|
content_node = entry_node.xpath('atom:content', NAMESPACES).first
|
23
30
|
|
31
|
+
entry.content = {:type => content_node['type']}
|
24
32
|
if (content_node['type'] == 'application/xml')
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
33
|
+
content_hash = {}
|
34
|
+
case content_node.children.first.name
|
35
|
+
when 'announcement'
|
36
|
+
announcement_node = content_node.xpath('cirrus:announcement', NAMESPACES).first
|
37
|
+
unless announcement_node.nil?
|
38
|
+
content_hash[:message] = announcement_node.xpath('cirrus:message', NAMESPACES).first.text
|
39
|
+
content_hash[:starts_at] = announcement_node.xpath('cirrus:starts-at', NAMESPACES).first.text
|
40
|
+
content_hash[:ends_at] = announcement_node.xpath('cirrus:ends-at', NAMESPACES).first.text
|
41
|
+
end
|
42
|
+
else
|
43
|
+
throw("Unknown Content Type: #{content_node.children.first.name}")
|
31
44
|
end
|
45
|
+
entry.content[:data] = {content_node.children.first.name => content_hash}
|
32
46
|
else
|
33
|
-
entry.content = content_node.inner_html
|
47
|
+
entry.content[:data] = content_node.inner_html
|
34
48
|
end
|
35
49
|
entry.categories = []
|
36
50
|
entry_node.xpath('atom:category', NAMESPACES).each do |category_node|
|
37
51
|
entry.categories << {:term => category_node['term'], :scheme => category_node['scheme']}
|
38
52
|
end
|
39
53
|
|
54
|
+
# puts("================================================================")
|
55
|
+
# puts("Entry")
|
56
|
+
# puts("================================================================")
|
57
|
+
# puts(entry.inspect)
|
58
|
+
# puts("================================================================")
|
59
|
+
|
40
60
|
entry
|
41
61
|
end
|
42
62
|
|