Sha256: d7dbc4396c53133760b88a1109e524702bf375c73e7e0d227eb3481ee2c2ed93
Contents?: true
Size: 1.55 KB
Versions: 22
Compression:
Stored size: 1.55 KB
Contents
module Eco module API class UseCases class DefaultCases class CodesToTagsCase < DefaultCase def process @cases.define("codes-to-tags-from", type: :other) do |session, options, usecase| raise "You have not defined a tagtree for the organisation" unless session.tagtree unless mapper = session.config.location_codes && session.config.locations_mapper raise "No filter_tags parser, nor location mappings are present" end to_tag = Proc.new do |code| if mapper.external?(code) mapper.to_internal(code) elsif session.tagtree.tag?(code) code.upcase else session.logger.warn("Unknown Location Code: '#{code}'") nil end end codes_column = options.dig(:other, :file, :codes_column) input_file = options.dig(:other, :file, :name) output_file = "mapped_#{File.basename(input_file).gsub(/\s/, "")}" csv_table = Eco::CSV.read(input_file) csv_table.add_column("ecoPortalTag").tap do |csv_table| csv_table.each do |row| row["ecoPortalTag"] = to_tag.call(row[codes_column]) end File.open(output_file, "w") {|fd| fd << csv_table.to_csv} end exit end end end end end end end
Version data entries
22 entries across 22 versions & 1 rubygems