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.
Files changed (3) hide show
  1. data/VERSION.yml +1 -1
  2. data/lib/atomic/entry.rb +28 -8
  3. metadata +1 -1
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 5
2
+ :patch: 6
3
3
  :major: 0
4
4
  :minor: 0
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
- entry.content = {}
26
- announcement_node = content_node.xpath('cirrus:announcement', NAMESPACES).first
27
- unless announcement_node.nil?
28
- entry.content[:message] = announcement_node.xpath('cirrus:message', NAMESPACES).first.text
29
- entry.content[:starts_at] = announcement_node.xpath('cirrus:starts-at', NAMESPACES).first.text
30
- entry.content[:ends_at] = announcement_node.xpath('cirrus:ends-at', NAMESPACES).first.text
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
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exempla-atomic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darrin Wortlehock