Class: Libis::Metadata::SharepointMapping
- Inherits:
-
Hash
- Object
- Hash
- Libis::Metadata::SharepointMapping
- Defined in:
- lib/libis/metadata/sharepoint_mapping.rb
Overview
Copy of old Sharepoint mapping class. Needs inspection and probably a mayor update.
Instance Method Summary collapse
- #db_column(label) ⇒ Object
- #db_value(label, value) ⇒ Object
- #dc_postfix(label) ⇒ Object
- #dc_prefix(label) ⇒ Object
- #dc_tag(label) ⇒ Object
- #fancy_label(label) ⇒ Object
-
#initialize(mapping_file) ⇒ SharepointMapping
constructor
A new instance of SharepointMapping.
- #name(label) ⇒ Object
Constructor Details
#initialize(mapping_file) ⇒ SharepointMapping
Returns a new instance of SharepointMapping.
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# 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 |
Instance Method Details
#db_column(label) ⇒ Object
103 104 105 106 107 |
# 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) ⇒ Object
109 110 111 112 113 114 |
# 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) ⇒ Object
97 98 99 100 101 |
# 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) ⇒ Object
91 92 93 94 95 |
# 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) ⇒ Object
85 86 87 88 89 |
# 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) ⇒ Object
79 80 81 82 83 |
# 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) ⇒ Object
73 74 75 76 77 |
# File 'lib/libis/metadata/sharepoint_mapping.rb', line 73 def name(label) mapping = self[label] mapping = mapping[:fancy_name] if mapping mapping || label end |