Sha256: f7f2207606afeacc7fb117f0a2ee733950a1f43a1ce15cd4ab03403ab04c34b9

Contents?: true

Size: 584 Bytes

Versions: 2

Compression:

Stored size: 584 Bytes

Contents

module Alephant
  module Renderer
    module Views
      class << self
        def register(klass)
          views[underscorify(klass.name.split('::').last)] = klass
        end

        def get_registered_class(id)
          views[id.downcase]
        end

        def underscorify(str)
          str.gsub(/::/, '/')
             .gsub(/([A-Z]+)([A-Z][a-z])/, '\\1_\\2')
             .gsub(/([a-z\d])([A-Z])/, '\\1_\\2')
             .tr('-', '_')
             .downcase
        end

        private

        def views
          @views ||= {}
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
alephant-renderer-3.2.0 lib/alephant/renderer/views.rb
alephant-renderer-3.1.0 lib/alephant/renderer/views.rb