Sha256: 80fba252c8a91de703e725794ef9226a4539d43d318c5b9c1a57cbf31a1d0325
Contents?: true
Size: 625 Bytes
Versions: 6
Compression:
Stored size: 625 Bytes
Contents
module Rbexy module ComponentProviders class RbexyProvider def match?(name) name =~ /^[A-Z]/ && find(name) != nil end def render(context, name, **attrs, &block) props = attrs.transform_keys { |k| ActiveSupport::Inflector.underscore(k.to_s).to_sym } find(name).new(context, **props).render(&block) end private def find(name) ActiveSupport::Inflector.constantize("#{name}Component") rescue NameError => e raise e unless e.message =~ /wrong constant name/ || e.message =~ /uninitialized constant/ nil end end end end
Version data entries
6 entries across 6 versions & 1 rubygems