lib/map_fields.rb in map_fields-1.0.4 vs lib/map_fields.rb in map_fields-2.0.0.beta
- old
+ new
@@ -1,201 +1,202 @@
-require 'fastercsv'
+require 'map_fields/controller'
+require 'map_fields/railtie' if defined?(Rails)
-module MapFields
- VERSION = '1.0.0'
+# module MapFields
+# VERSION = '1.0.0'
- def self.included(base)
- base.extend(ClassMethods)
- end
+# def self.included(base)
+# base.extend(ClassMethods)
+# end
- def map_fields
- default_options = {
- :file_field => 'file',
- :params => []
- }
- options = default_options.merge(
- self.class.read_inheritable_attribute(:map_fields_options)
- )
+# def map_fields
+# default_options = {
+# :file_field => 'file',
+# :params => []
+# }
+# options = default_options.merge(
+# self.class.read_inheritable_attribute(:map_fields_options)
+# )
- RAILS_DEFAULT_LOGGER.debug("session[:map_fields]: #{session[:map_fields]}")
- RAILS_DEFAULT_LOGGER.debug("params[options[:file_field]]: #{params[options[:file_field]]}")
- if session[:map_fields].nil? || !params[options[:file_field]].blank?
- session[:map_fields] = {}
- if params[options[:file_field]].blank?
- @map_fields_error = MissingFileContentsError
- return
- end
+# RAILS_DEFAULT_LOGGER.debug("session[:map_fields]: #{session[:map_fields]}")
+# RAILS_DEFAULT_LOGGER.debug("params[options[:file_field]]: #{params[options[:file_field]]}")
+# if session[:map_fields].nil? || !params[options[:file_field]].blank?
+# session[:map_fields] = {}
+# if params[options[:file_field]].blank?
+# @map_fields_error = MissingFileContentsError
+# return
+# end
- file_field = params[options[:file_field]]
+# file_field = params[options[:file_field]]
- temp_path = File.join(Dir::tmpdir, "map_fields_#{Time.now.to_i}_#{$$}")
- File.open(temp_path, 'wb') do |f|
- f.write file_field.read
- end
+# temp_path = File.join(Dir::tmpdir, "map_fields_#{Time.now.to_i}_#{$$}")
+# File.open(temp_path, 'wb') do |f|
+# f.write file_field.read
+# end
- session[:map_fields][:file] = temp_path
- else
- if session[:map_fields][:file].nil? || params[:fields].nil?
- session[:map_fields] = nil
- @map_fields_error = InconsistentStateError
- else
- expected_fields = self.class.read_inheritable_attribute(:map_fields_fields)
- if expected_fields.respond_to?(:call)
- expected_fields = expected_fields.call(params)
- end
- @mapped_fields = MappedFields.new(session[:map_fields][:file],
- expected_fields,
- params[:fields],
- params[:ignore_first_row])
- end
- end
+# session[:map_fields][:file] = temp_path
+# else
+# if session[:map_fields][:file].nil? || params[:fields].nil?
+# session[:map_fields] = nil
+# @map_fields_error = InconsistentStateError
+# else
+# expected_fields = self.class.read_inheritable_attribute(:map_fields_fields)
+# if expected_fields.respond_to?(:call)
+# expected_fields = expected_fields.call(params)
+# end
+# @mapped_fields = MappedFields.new(session[:map_fields][:file],
+# expected_fields,
+# params[:fields],
+# params[:ignore_first_row])
+# end
+# end
- unless @map_fields_error
- @rows = []
- begin
- FasterCSV.foreach(session[:map_fields][:file]) do |row|
- @rows << row
- break if @rows.size == 10
- end
- rescue FasterCSV::MalformedCSVError => e
- @map_fields_error = e
- end
- expected_fields = self.class.read_inheritable_attribute(:map_fields_fields)
- if expected_fields.respond_to?(:call)
- expected_fields = expected_fields.call(params)
- end
- @fields = ([nil] + expected_fields).inject([]){ |o, e| o << [e, o.size]}
- @parameters = []
- options[:params].each do |param|
- @parameters += ParamsParser.parse(params, param)
- end
- end
- end
+# unless @map_fields_error
+# @rows = []
+# begin
+# FasterCSV.foreach(session[:map_fields][:file]) do |row|
+# @rows << row
+# break if @rows.size == 10
+# end
+# rescue FasterCSV::MalformedCSVError => e
+# @map_fields_error = e
+# end
+# expected_fields = self.class.read_inheritable_attribute(:map_fields_fields)
+# if expected_fields.respond_to?(:call)
+# expected_fields = expected_fields.call(params)
+# end
+# @fields = ([nil] + expected_fields).inject([]){ |o, e| o << [e, o.size]}
+# @parameters = []
+# options[:params].each do |param|
+# @parameters += ParamsParser.parse(params, param)
+# end
+# end
+# end
- def mapped_fields
- @mapped_fields
- end
+# def mapped_fields
+# @mapped_fields
+# end
- def fields_mapped?
- raise @map_fields_error if @map_fields_error
- @mapped_fields
- end
+# def fields_mapped?
+# raise @map_fields_error if @map_fields_error
+# @mapped_fields
+# end
- def map_field_parameters(&block)
+# def map_field_parameters(&block)
- end
+# end
- def map_fields_cleanup
- if @mapped_fields
- if session[:map_fields][:file]
- File.delete(session[:map_fields][:file])
- end
- session[:map_fields] = nil
- @mapped_fields = nil
- @map_fields_error = nil
- end
- end
+# def map_fields_cleanup
+# if @mapped_fields
+# if session[:map_fields][:file]
+# File.delete(session[:map_fields][:file])
+# end
+# session[:map_fields] = nil
+# @mapped_fields = nil
+# @map_fields_error = nil
+# end
+# end
- module ClassMethods
- def map_fields(actions, fields, options = {})
- write_inheritable_attribute(:map_fields_fields, fields)
- write_inheritable_attribute(:map_fields_options, options)
- before_filter :map_fields, :only => actions
- after_filter :map_fields_cleanup, :only => actions
- end
- end
+# module ClassMethods
+# def map_fields(actions, fields, options = {})
+# write_inheritable_attribute(:map_fields_fields, fields)
+# write_inheritable_attribute(:map_fields_options, options)
+# before_filter :map_fields, :only => actions
+# after_filter :map_fields_cleanup, :only => actions
+# end
+# end
- class MappedFields
- attr_reader :mapping, :ignore_first_row, :file
+# class MappedFields
+# attr_reader :mapping, :ignore_first_row, :file
- def initialize(file, fields, mapping, ignore_first_row)
- @file = file
- @fields = fields
- @mapping = {}
- @ignore_first_row = ignore_first_row == '1'
+# def initialize(file, fields, mapping, ignore_first_row)
+# @file = file
+# @fields = fields
+# @mapping = {}
+# @ignore_first_row = ignore_first_row == '1'
- mapping.each do |k,v|
- unless v.to_i == 0
- #Numeric mapping
- @mapping[v.to_i - 1] = k.to_i - 1
- #Text mapping
- @mapping[fields[v.to_i-1]] = k.to_i - 1
- #Symbol mapping
- sym_key = fields[v.to_i-1].downcase.
- gsub(/[-\s\/]+/, '_').
- gsub(/[^a-zA-Z0-9_]+/, '').
- to_sym
- @mapping[sym_key] = k.to_i - 1
- end
- end
- end
+# mapping.each do |k,v|
+# unless v.to_i == 0
+# #Numeric mapping
+# @mapping[v.to_i - 1] = k.to_i - 1
+# #Text mapping
+# @mapping[fields[v.to_i-1]] = k.to_i - 1
+# #Symbol mapping
+# sym_key = fields[v.to_i-1].downcase.
+# gsub(/[-\s\/]+/, '_').
+# gsub(/[^a-zA-Z0-9_]+/, '').
+# to_sym
+# @mapping[sym_key] = k.to_i - 1
+# end
+# end
+# end
- def is_mapped?(field)
- !@mapping[field].nil?
- end
+# def is_mapped?(field)
+# !@mapping[field].nil?
+# end
- def each
- row_number = 1
- FasterCSV.foreach(@file) do |csv_row|
- unless row_number == 1 && @ignore_first_row
- row = {}
- @mapping.each do |k,v|
- row[k] = csv_row[v]
- end
- row.class.send(:define_method, :number) { row_number }
- yield(row)
- end
- row_number += 1
- end
- end
- end
+# def each
+# row_number = 1
+# FasterCSV.foreach(@file) do |csv_row|
+# unless row_number == 1 && @ignore_first_row
+# row = {}
+# @mapping.each do |k,v|
+# row[k] = csv_row[v]
+# end
+# row.class.send(:define_method, :number) { row_number }
+# yield(row)
+# end
+# row_number += 1
+# end
+# end
+# end
- class InconsistentStateError < StandardError
- end
+# class InconsistentStateError < StandardError
+# end
- class MissingFileContentsError < StandardError
- end
+# class MissingFileContentsError < StandardError
+# end
- class ParamsParser
- def self.parse(params, field = nil)
- result = []
- params.each do |key,value|
- if field.nil? || field.to_s == key.to_s
- check_values(value) do |k,v|
- result << ["#{key.to_s}#{k}", v]
- end
- end
- end
- result
- end
+# class ParamsParser
+# def self.parse(params, field = nil)
+# result = []
+# params.each do |key,value|
+# if field.nil? || field.to_s == key.to_s
+# check_values(value) do |k,v|
+# result << ["#{key.to_s}#{k}", v]
+# end
+# end
+# end
+# result
+# end
- private
- def self.check_values(value, &block)
- result = []
- if value.kind_of?(Hash)
- value.each do |k,v|
- check_values(v) do |k2,v2|
- result << ["[#{k.to_s}]#{k2}", v2]
- end
- end
- elsif value.kind_of?(Array)
- value.each do |v|
- check_values(v) do |k2, v2|
- result << ["[]#{k2}", v2]
- end
- end
- else
- result << ["", value]
- end
- result.each do |arr|
- yield arr[0], arr[1]
- end
- end
- end
-end
+# private
+# def self.check_values(value, &block)
+# result = []
+# if value.kind_of?(Hash)
+# value.each do |k,v|
+# check_values(v) do |k2,v2|
+# result << ["[#{k.to_s}]#{k2}", v2]
+# end
+# end
+# elsif value.kind_of?(Array)
+# value.each do |v|
+# check_values(v) do |k2, v2|
+# result << ["[]#{k2}", v2]
+# end
+# end
+# else
+# result << ["", value]
+# end
+# result.each do |arr|
+# yield arr[0], arr[1]
+# end
+# end
+# end
+# end
-if defined?(Rails) and defined?(ActionController)
- ActionController::Base.send(:include, MapFields)
- ActionController::Base.view_paths.push File.expand_path(File.join(File.dirname(__FILE__), '..', 'views'))
- #This is a hack but the above code is not enough when using bundler and Rails 2.3.5
- ActionController::Base.view_paths.push "app/views"
-end
+# if defined?(Rails) and defined?(ActionController)
+# ActionController::Base.send(:include, MapFields)
+# ActionController::Base.view_paths.push File.expand_path(File.join(File.dirname(__FILE__), '..', 'views'))
+# #This is a hack but the above code is not enough when using bundler and Rails 2.3.5
+# ActionController::Base.view_paths.push "app/views"
+# end