Sha256: ad9f257ff635767a3b95d171aeba53f1f7c59fa6e286549f0e8e29c06b52e2ba

Contents?: true

Size: 610 Bytes

Versions: 10

Compression:

Stored size: 610 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

      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

10 entries across 10 versions & 1 rubygems

Version Path
rbexy-1.1.0 lib/rbexy/component_providers/rbexy_provider.rb
rbexy-1.0.2 lib/rbexy/component_providers/rbexy_provider.rb
rbexy-1.0.1 lib/rbexy/component_providers/rbexy_provider.rb
rbexy-1.0.0 lib/rbexy/component_providers/rbexy_provider.rb
rbexy-0.3.1 lib/rbexy/component_providers/rbexy_provider.rb
rbexy-0.3.0 lib/rbexy/component_providers/rbexy_provider.rb
rbexy-0.2.3 lib/rbexy/component_providers/rbexy_provider.rb
rbexy-0.2.2 lib/rbexy/component_providers/rbexy_provider.rb
rbexy-0.2.1 lib/rbexy/component_providers/rbexy_provider.rb
rbexy-0.2.0 lib/rbexy/component_providers/rbexy_provider.rb