debian-mirror-gitlab/lib/gitlab/gitaly_client/attributes_bag.rb

34 lines
781 B
Ruby
Raw Normal View History

2019-02-15 15:39:39 +05:30
# frozen_string_literal: true
2018-03-17 18:26:18 +05:30
module Gitlab
module GitalyClient
# This module expects an `ATTRS` const to be defined on the subclass
# See GitalyClient::WikiFile for an example
module AttributesBag
extend ActiveSupport::Concern
included do
2019-12-21 20:55:43 +05:30
attr_accessor(*const_get(:ATTRS, false))
2018-03-17 18:26:18 +05:30
end
def initialize(params)
params = params.with_indifferent_access
attributes.each do |attr|
instance_variable_set("@#{attr}", params[attr])
end
end
def ==(other)
attributes.all? do |field|
instance_variable_get("@#{field}") == other.instance_variable_get("@#{field}")
end
end
def attributes
2019-12-21 20:55:43 +05:30
self.class.const_get(:ATTRS, false)
2018-03-17 18:26:18 +05:30
end
end
end
end