exempla-atomic 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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