class DarwinCore::Generator::MetaXml
Creates DarwinCore
meta file
Public Class Methods
new(data, path)
click to toggle source
# File lib/dwc_archive/generator_meta_xml.rb, line 5 def initialize(data, path) @data = data @path = path @write = "w:utf-8" end
Public Instance Methods
create()
click to toggle source
# File lib/dwc_archive/generator_meta_xml.rb, line 11 def create schema_uri = "http://rs.tdwg.org/dwc/terms/xsd/archive/ "\ "http://darwincore.googlecode.com/svn/trunk/text/tdwg_dwc_text.xsd" builder = Nokogiri::XML::Builder.new do |xml| opts = { encoding: "UTF-8", fieldsTerminatedBy: ",", fieldsEnclosedBy: '"', linesTerminatedBy: "\n", rowType: "http://rs.tdwg.org/dwc/terms/Taxon" } build_archive(xml, opts, schema_uri) end save_meta(builder) end
Private Instance Methods
build_archive(xml, opts, schema_uri)
click to toggle source
# File lib/dwc_archive/generator_meta_xml.rb, line 32 def build_archive(xml, opts, schema_uri) xml.archive(xmlns: "http://rs.tdwg.org/dwc/text/", :"xmlns:xsi" => "http://www.w3.org/2001/XMLSchema-instance", :"xsi:schemaLocation" => schema_uri) do build_core(xml, opts) build_extensions(xml, opts) end end
build_core(xml, opts)
click to toggle source
# File lib/dwc_archive/generator_meta_xml.rb, line 41 def build_core(xml, opts) xml.core(opts.merge(ignoreHeaderLines: @data[:core][:ignoreHeaderLines])) do xml.files { xml.location(@data[:core][:location]) } taxon_id, fields = find_taxon_id(@data[:core][:fields]) xml.id_(index: taxon_id[1]) fields.each { |f| xml.field(term: f[0], index: f[1]) } end end
build_extensions(xml, opts)
click to toggle source
# File lib/dwc_archive/generator_meta_xml.rb, line 51 def build_extensions(xml, opts) @data[:extensions].each do |e| xml.extension(opts.merge(ignoreHeaderLines: e[:ignoreHeaderLines], rowType: e[:rowType])) do xml.files { xml.location(e[:location]) } taxon_id, fields = find_taxon_id(e[:fields]) xml.coreid(index: taxon_id[1]) fields.each { |f| xml.field(term: f[0], index: f[1]) } end end end
find_taxon_id(data)
click to toggle source
# File lib/dwc_archive/generator_meta_xml.rb, line 63 def find_taxon_id(data) fields = [] data.each_with_index { |f, i| fields << [f.strip, i] } taxon_id, fields = fields.partition { |f| f[0].match(/\/taxonid$/i) } fail DarwinCore::GeneratorError if taxon_id.size != 1 [taxon_id[0], fields] end
save_meta(builder)
click to toggle source
# File lib/dwc_archive/generator_meta_xml.rb, line 25 def save_meta(builder) meta_xml_data = builder.to_xml meta_file = open(File.join(@path, "meta.xml"), @write) meta_file.write(meta_xml_data) meta_file.close end