Sha256: 6f3dad374e1c3a1a407c7ec4ba621cd2a047c60edabbe28d5261e504d2114ec3

Contents?: true

Size: 900 Bytes

Versions: 9

Compression:

Stored size: 900 Bytes

Contents

# frozen_string_literal: true

# This class defines settings for output
module Light
  module Services
    module Settings
      class Output
        # Getters
        attr_reader :name, :default_exists, :default

        def initialize(name, service_class, opts = {})
          @name = name
          @service_class = service_class

          @default_exists = opts.key?(:default)
          @default = opts.delete(:default)

          define_methods
        end

        private

        def define_methods
          name = @name

          @service_class.define_method(@name) { @outputs.get(name) }
          @service_class.define_method("#{@name}?") { !!@outputs.get(name) } # rubocop:disable Style/DoubleNegation
          @service_class.define_method("#{@name}=") { |value| @outputs.set(name, value) }
          @service_class.send(:private, "#{@name}=")
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
light-services-2.0.0.rc9 lib/light/services/settings/output.rb
light-services-2.0.0.rc8 lib/light/services/settings/output.rb
light-services-2.0.0.rc7 lib/light/services/settings/output.rb
light-services-2.0.0.rc6 lib/light/services/settings/output.rb
light-services-2.0.0.rc4 lib/light/services/settings/output.rb
light-services-2.0.0.rc3 lib/light/services/settings/output.rb
light-services-2.0.0.rc2 lib/light/services/settings/output.rb
light-services-2.0.0.rc1 lib/light/services/settings/output.rb
light-services-2.0.0.beta1 lib/light/services/settings/output.rb