cfcosta/generic_view_mapper

View on GitHub
lib/generic_view_mapper.rb

Summary

Maintainability
A
0 mins
Test Coverage
require 'generic_view_mapper/version'
require 'generic_view_mapper/view'
require 'generic_view_mapper/entity'
require 'generic_view_mapper/registry'
require 'generic_view_mapper/registry_matcher'

if defined?(Rails::Railtie)
  require 'generic_view_mapper/rails/autoregister'
  require 'generic_view_mapper/railtie'
end

module GenericViewMapper
  extend self

  def registry
    Thread.current[:gvm_registry] ||= Registry.new.tap(&:register_all)
  end

  def matcher
    Thread.current[:gvm_matcher] ||= RegistryMatcher.new(registry)
  end

  def render(*datas)
    processed = datas.map do |data|
      entity = data.is_a?(Hash) ? matcher.find_entity_for(data) : data
      matcher.find_view_for(entity).new(entity)
    end

    processed.size == 1 ? processed.first : processed
  end
end