Class: Taverna::Baclava::Reader
- Inherits:
-
Object
- Object
- Taverna::Baclava::Reader
- Defined in:
- lib/baclava/reader.rb
Class Method Summary collapse
-
.create_data_map(element) ⇒ Object
:stopdoc:.
- .get_element(element) ⇒ Object
- .get_list(element) ⇒ Object
- .get_metadata(element) ⇒ Object
-
.read(xml) ⇒ Object
Reads a baclava document and returns a hash of Baclava::Node objects.
Class Method Details
.create_data_map(element) ⇒ Object
:stopdoc:
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/baclava/reader.rb', line 56 def self.create_data_map(element) data_map = {} element.each_element('b:dataThing') do |datathing| key = datathing.attribute('key').value data = Node.new data_map[key] = data datathing.each_element('b:myGridDataDocument') do |dataDocument| dataDocument.each_element('s:metadata') do || data.annotation = () end dataDocument.each_element('b:partialOrder') do |partialOrder| data.value = get_list(partialOrder) end dataDocument.each_element('b:dataElement') do |dataElement| data.value = get_element(dataElement) end end end data_map end |
.get_element(element) ⇒ Object
102 103 104 105 106 107 |
# File 'lib/baclava/reader.rb', line 102 def self.get_element(element) element.each_element('b:dataElementData') do |data| text = data.text return text.nil? ? "" : Base64.decode64(text) end end |
.get_list(element) ⇒ Object
79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/baclava/reader.rb', line 79 def self.get_list(element) list = [] element.each_element('b:itemList') do |itemList| itemList.each_element('b:dataElement') do |dataElement| list << get_element(dataElement) end itemList.each_element('b:partialOrder') do |partialOrder| list << get_list(partialOrder) end end list end |
.get_metadata(element) ⇒ Object
92 93 94 95 96 97 98 99 100 |
# File 'lib/baclava/reader.rb', line 92 def self.(element) list = [] element.each_element('s:mimeTypes') do |mimeTypes| mimeTypes.each_element('s:mimeType') do |mimeType| list << mimeType.text end end list end |
.read(xml) ⇒ Object
Reads a baclava document and returns a hash of Baclava::Node objects.
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/baclava/reader.rb', line 42 def self.read(xml) if xml.kind_of?(REXML::Document) document = xml else document = REXML::Document.new(xml) end root = document.root raise "'#{root.name}' doesn't appear to be a data thing!" if root.name != "dataThingMap" create_data_map(root) end |