Sha256: 6669bc0a651d733b375ffd687973cc6845db41835f206c25e28e29fbc5095d9c

Contents?: true

Size: 847 Bytes

Versions: 4

Compression:

Stored size: 847 Bytes

Contents

module Xpose
  module Configuration
    DEFAULT_VALUES = {
      name: nil,
      value: nil,
      decorate: true,
      decorator: :infer,
      infer_value: true,
      scope: :all
    }.freeze

    def self.build(**args)
      args = DEFAULT_VALUES.merge(args).keep_if do |k, v|
        DEFAULT_VALUES.has_key?(k)
      end
      OpenStruct.new(args).tap do |conf|
        conf.name = conf.name.to_s
        conf.method_name = conf.name.to_sym
        conf.instance_variable_name = :"@#{conf.method_name}"

        conf.singularized_name = conf.name.singularize
        conf.pluralized_name = conf.name.pluralize

        conf.decorated_name = "decorated_#{conf.name}"
        conf.decorated_method_name = conf.decorated_name.to_sym
        conf.decorated_instance_variable_name = :"@decorated_#{conf.method_name}"
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
xpose-0.1.5 lib/xpose/configuration.rb
xpose-0.1.2 lib/xpose/configuration.rb
xpose-0.1.1 lib/xpose/configuration.rb
xpose-0.1.0 lib/xpose/configuration.rb