welldan97/protocolist

View on GitHub
lib/protocolist/util/data_proc.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Protocolist
  module Util
    module DataProc
      extend ActiveSupport::Concern

      module ClassMethods
        private

        def extract_data_proc(data)
          if data.respond_to?(:call)
            ->(o) { data.call(o) }
          elsif data.is_a?(Symbol)
            ->(o) { o.send(data) }
          elsif data.is_a?(String)
            ->(o) { o.instance_eval "(#{data})" }
          else
            ->(_) { data }
          end
        end
      end
    end
  end
end