Sha256: 237df18cea57343d34d03ff0c863c4496b98d047d6ae1d89dd04d999babe3af1

Contents?: true

Size: 979 Bytes

Versions: 1

Compression:

Stored size: 979 Bytes

Contents

# frozen_string_literal: true

module Shirinji
  class Bean
    attr_reader :name, :class_name, :value, :access, :attributes, :construct

    # rubocop:disable Metrics/ParameterLists
    def initialize(
      name, class_name: nil, value: nil, access:, construct: true, &block
    )
      check_params!(class_name, value)

      @name = name
      @class_name = class_name
      @value = value
      @access = access
      @attributes = {}
      @construct = construct

      instance_eval(&block) if block
    end
    # rubocop:enable Metrics/ParameterLists

    def attr(name, ref:)
      attributes[name] = Attribute.new(name, ref)
    end

    private

    def check_params!(class_name, value)
      msg = if class_name && value
              'you can use either `class_name` or `value` but not both'
            elsif !class_name && !value
              'you must pass either `class_name` or `value`'
            end

      raise ArgumentError, msg if msg
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shirinji-0.0.4 lib/shirinji/bean.rb