class Qti::Models::MetaData
Public Class Methods
new(node)
click to toggle source
# File lib/qti/models/metadata.rb, line 4 def initialize(node) @node = node end
Public Instance Methods
taxonpaths()
click to toggle source
# File lib/qti/models/metadata.rb, line 8 def taxonpaths return unless lom hier = Hash.new { |h, k| h[k] = [] } lom.xpath('imsmd:classification/imsmd:taxonPath').each do |tp| entry = taxonpath_entry(tp) hier[entry[:source]] = entry[:taxonpath] end hier end
Private Instance Methods
imsmd()
click to toggle source
# File lib/qti/models/metadata.rb, line 36 def imsmd @node.namespaces&.keys&.include?('xmlns:imsmd') end
lom()
click to toggle source
# File lib/qti/models/metadata.rb, line 31 def lom return unless imsmd @lom ||= metadata&.xpath('imsmd:lom')&.first end
metadata()
click to toggle source
# File lib/qti/models/metadata.rb, line 27 def metadata @metadata ||= @node&.xpath('xmlns:metadata')&.first end
taxon(node, path)
click to toggle source
# File lib/qti/models/metadata.rb, line 45 def taxon(node, path) return path unless node xpath = 'imsmd:taxon/imsmd:entry/*[self::imsmd:string or self::imsmd:langstring]' node.xpath(xpath).each do |taxon| lang = taxon.attr('language') || taxon.attr('lang') || taxon.attr('xml:lang') || 'default' path[lang].push(taxon.text) end taxon(node.xpath('imsmd:taxon')&.first, path) end
taxonpath_entry(node)
click to toggle source
# File lib/qti/models/metadata.rb, line 20 def taxonpath_entry(node) { source: node.xpath('imsmd:source/imsmd:string').text, taxonpath: taxons(node) } end
taxons(node)
click to toggle source
# File lib/qti/models/metadata.rb, line 40 def taxons(node) hier = Hash.new { |h, k| h[k] = [] } taxon(node, hier) end