Class: Taverna::Baclava::Reader

Inherits:
Object
  • Object
show all
Defined in:
lib/baclava/reader.rb

Class Method Summary collapse

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