module CardmarketCLI::Entities::Unique
Makes a class unique
Public Instance Methods
uniq_attr(symbol, options = {})
click to toggle source
# File lib/cardmarket_cli/entities/unique.rb, line 8 def uniq_attr(symbol, options = {}) options = { hash: true, plural: "#{symbol}s", index: :id }.merge! options def_brackets(options[:plural], options[:hash]) def_add(options[:plural], options[:hash], options[:index]) def_reader(options[:plural], options[:hash]) end
Private Instance Methods
def_add(plural, hash, index)
click to toggle source
# File lib/cardmarket_cli/entities/unique.rb, line 35 def def_add(plural, hash, index) define_method :add do |item| instance_variable_set("@#{plural}", hash ? {} : []) unless instance_variable_defined? "@#{plural}" if hash instance_variable_get("@#{plural}")[item.send(index)] = item else instance_variable_get("@#{plural}") << item end end private :add end
def_brackets(plural, hash)
click to toggle source
# File lib/cardmarket_cli/entities/unique.rb, line 26 def def_brackets(plural, hash) return if respond_to? :[] define_method :[] do |id| instance_variable_set("@#{plural}", hash ? {} : []) unless instance_variable_defined? "@#{plural}" instance_variable_get("@#{plural}")[id] end end
def_reader(plural, hash)
click to toggle source
# File lib/cardmarket_cli/entities/unique.rb, line 17 def def_reader(plural, hash) return if respond_to? plural.to_s.to_sym define_method plural.to_s do instance_variable_set("@#{plural}", hash ? {} : []) unless instance_variable_defined? "@#{plural}" instance_variable_get("@#{plural}").dup end end