class Libis::Metadata::SharepointMapping
Copy of old Sharepoint mapping class. Needs inspection and probably a mayor update.
Public Class Methods
new(mapping_file)
click to toggle source
Calls superclass method
# File lib/libis/metadata/sharepoint_mapping.rb, line 14 def initialize(mapping_file) CSV.foreach(mapping_file, headers: true, skip_blanks: true) do |row| next unless row[1] # next unless (row[2] || row[3]) # compensation for bug in library that reads the Excel data 0.upto(5) { |i| row[i] = row[i].gsub(/_x005F(_x[0-9a-fA-F]{4}_)/, '\1') if row[i] } name = row[0] ? row[0].strip : nil label = row[1].strip.to_sym dc_tag = row[2] ? row[2].strip : '' db_column = row[3] ? row[3].strip : nil db_datatype = row[4] ? row[4].strip.upcase.to_sym : nil db_valuemask = row[5] ? row[5] : nil # scope_tag = row[6] ? row[6].strip : nil # scope_id = (row[7] and row[7] =~ /[0-9]+/ ? Integer(row[7].strip) : nil) mapping = {} mapping[:fancy_name] = name if name mapping[:db_column] = db_column if db_column mapping[:db_datatype] = :STRING mapping[:db_datatype] = db_datatype if db_datatype mapping[:db_valuemask] = (mapping[:db_datatype] == :STRING ? "'@@'" : '@@') mapping[:db_valuemask] = db_valuemask if db_valuemask # mapping[:scope_tag] = scope_tag if scope_tag # mapping[:scope_id] = scope_id if scope_id if dc_tag.match(/^\s*"(.*)"\s*(<.*)$/) mapping[:dc_prefix] = $1 dc_tag = $2 end if dc_tag.match(/^\s*<dc:[^.]+\.([^.>]+)>(.*)$/) mapping[:dc_tag] = "dcterms:#{$1}" dc_tag = $2 elsif dc_tag.match(/^\s*<dc:([^.>]+)>(.*)$/) mapping[:dc_tag] = "dc:#{$1}" dc_tag = $2 end if dc_tag.match(/^\s*"(.*)"\s*$/) mapping[:dc_postfix] = $1 end self[label] = mapping.empty? ? nil : mapping end File.open('mapping.yml', 'wt') { |fp| fp.puts self.to_yaml } super nil end
Public Instance Methods
db_column(label)
click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 103 def db_column(label) mapping = self[label] mapping = mapping[:db_column] if mapping mapping end
db_value(label, value)
click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 109 def db_value(label, value) mapping = self[label] return nil unless mapping mask = mapping[:db_valuemask] mask.gsub('@@', value.to_s) end
dc_postfix(label)
click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 97 def dc_postfix(label) mapping = self[label] mapping = mapping[:dc_postfix] if mapping mapping end
dc_prefix(label)
click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 91 def dc_prefix(label) mapping = self[label] mapping = mapping[:dc_prefix] if mapping mapping end
dc_tag(label)
click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 85 def dc_tag(label) mapping = self[label] mapping = mapping[:dc_tag] if mapping mapping end
fancy_label(label)
click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 79 def fancy_label(label) mapping = self[label] mapping = mapping[:fancy_name] if mapping "#{label}#{mapping ? '(' + mapping + ')' : ''}" end
name(label)
click to toggle source
# File lib/libis/metadata/sharepoint_mapping.rb, line 73 def name(label) mapping = self[label] mapping = mapping[:fancy_name] if mapping mapping || label end