fteem/marver

View on GitHub
lib/marver/helpers/string_helper.rb

Summary

Maintainability
A
1 hr
Test Coverage
module Marver
  module StringHelper
    def summary_class(entity)
      constantize("Marver::Summary::#{refined(entity)}")
    end

    def common_class(entity)
      constantize("Marver::#{refined(entity)}")
    end

    def parameterize(entity)
      entity.split(/(?=[A-Z])/).join('_').downcase
    end

    def refined(name)
      return "Comic" if name == 'originalIssue'
      return 'TextObject' if name == 'textObjects'
      return "KeyDate" if name == 'dates'
      return "Image" if name == 'thumbnail'
      return "Story" if name == 'stories'
      return name[0..-2].capitalize
    end

    def constantize(camel_cased_word)
      names = camel_cased_word.split('::')
      names.shift if names.empty? || names.first.empty?

      constant = Object
      names.each do |name|
        constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
      end
      constant
    end

  end
end