Sha256: 8ff3dcce637bcee141b59f0f30b865e668b035ffcede572528428f48f7a899e6

Contents?: true

Size: 981 Bytes

Versions: 1

Compression:

Stored size: 981 Bytes

Contents

require 'smart_properties'

module ActionWidget
  class Configuration
    include SmartProperties
    property :prefix
    property :suffix

    attr_reader :pattern

    def initialize(*)
      super

      @pattern = Regexp.new([
        (prefix.underscore if prefix.presence),
        "(.*)",
        (suffix.underscore if suffix.presence)
      ].compact.join("_"))
    end
  end

  class << self
    def configuration
      @configuration ||= Configuration.new(suffix: "Widget")
    end

    def configure(&block)
      @configuration = Configuration.new(&block)
    end

    def helper?(name)
      !!configuration.pattern.match(name)
    end

    def class_for(helper_name)
      basename = configuration.pattern.match(helper_name)[1]
      classname = [configuration.prefix, basename.camelcase, configuration.suffix].join("")
      classname.constantize
    end
  end
end

require 'action_widget/base'
require 'action_widget/view_helper'
require 'action_widget/extensions'

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
action_widget-0.6.0.pre lib/action_widget.rb