module CardmarketCLI::Entities::Deletable
marks that an entity can be deleted
Public Instance Methods
list_attr(symbol, options = {})
click to toggle source
# File lib/cardmarket_cli/entities/deletable.rb, line 8 def list_attr(symbol, options = {}) options = { plural: "#{symbol}s", default: true, suffix: true, add: 'add', delete: 'delete', hash: false } .merge!(options) def_modifiers(symbol, options[:plural], options) def_reader(options[:plural], options[:hash]) def_brackets(options[:plural], options[:hash]) if options[:default] def_clear(options[:plural], options[:hash]) symbol end
Private Instance Methods
def_add_array(symbol, plural, name, suffix)
click to toggle source
# File lib/cardmarket_cli/entities/deletable.rb, line 42 def def_add_array(symbol, plural, name, suffix) define_method "#{name}#{"_#{symbol}" if suffix}" do |value| instance_variable_set("@#{plural}", []) unless instance_variable_defined? "@#{plural}" instance_variable_set("@deleted_#{plural}", []) unless instance_variable_defined? "@deleted_#{plural}" instance_variable_get("@#{plural}") << value if value instance_variable_get("@deleted_#{plural}").delete(value) value end end
def_add_hash(symbol, plural, name, suffix)
click to toggle source
# File lib/cardmarket_cli/entities/deletable.rb, line 31 def def_add_hash(symbol, plural, name, suffix) define_method "#{name}#{"_#{symbol}" if suffix}" do |params| key, value, = params instance_variable_set("@#{plural}", {}) unless instance_variable_defined? "@#{plural}" instance_variable_set("@deleted_#{plural}", {}) unless instance_variable_defined? "@deleted_#{plural}" instance_variable_get("@#{plural}")[key] = value if key instance_variable_get("@deleted_#{plural}").delete(key) { key => value } end end
def_brackets(plural, hash)
click to toggle source
# File lib/cardmarket_cli/entities/deletable.rb, line 95 def def_brackets(plural, hash) return if respond_to? :[] define_method :[] do |key| instance_variable_set("@#{plural}", hash ? {} : []) unless instance_variable_defined? "@#{plural}" instance_variable_get("@#{plural}")[key] end end
def_clear(plural, hash)
click to toggle source
# File lib/cardmarket_cli/entities/deletable.rb, line 104 def def_clear(plural, hash) define_method :clear do instance_variable_set("@#{plural}", hash ? {} : []) instance_variable_set("@deleted_#{plural}", hash ? {} : []) end private :clear end
def_delete_array(symbol, plural, name, suffix)
click to toggle source
# File lib/cardmarket_cli/entities/deletable.rb, line 62 def def_delete_array(symbol, plural, name, suffix) define_method "#{name}#{"_#{symbol}" if suffix}" do |value| instance_variable_set("@#{plural}", []) unless instance_variable_defined? "@#{plural}" instance_variable_set("@deleted_#{plural}", []) unless instance_variable_defined? "@deleted_#{plural}" deleted = instance_variable_get("@#{plural}").delete(value) instance_variable_get("@deleted_#{plural}") << deleted if deleted deleted end end
def_delete_hash(symbol, plural, name, suffix)
click to toggle source
# File lib/cardmarket_cli/entities/deletable.rb, line 52 def def_delete_hash(symbol, plural, name, suffix) define_method "#{name}#{"_#{symbol}" if suffix}" do |key| instance_variable_set("@#{plural}", {}) unless instance_variable_defined? "@#{plural}" instance_variable_set("@deleted_#{plural}", {}) unless instance_variable_defined? "@deleted_#{plural}" deleted = instance_variable_get("@#{plural}").delete(key) instance_variable_get("@deleted_#{plural}")[key] = deleted if deleted deleted end end
def_modifiers(symbol, plural, options)
click to toggle source
# File lib/cardmarket_cli/entities/deletable.rb, line 20 def def_modifiers(symbol, plural, options) options = { suffix: true, add: 'add', delete: 'delete', hash: false }.merge! options if options[:hash] def_add_hash(symbol, plural, options[:add], options[:suffix]) def_delete_hash(symbol, plural, options[:delete], options[:suffix]) else def_add_array(symbol, plural, options[:add], options[:suffix]) def_delete_array(symbol, plural, options[:delete], options[:suffix]) end end
def_reader(plural, hash)
click to toggle source
# File lib/cardmarket_cli/entities/deletable.rb, line 72 def def_reader(plural, hash) return if respond_to? plural.to_s.to_sym def_reader_normal(plural, hash) def_reader_deleted(plural, hash) end
def_reader_deleted(plural, hash)
click to toggle source
# File lib/cardmarket_cli/entities/deletable.rb, line 86 def def_reader_deleted(plural, hash) define_method "deleted_#{plural}" do unless instance_variable_defined? "@deleted_#{plural}" instance_variable_set("@deleted_#{plural}", hash ? {} : []) end instance_variable_get("@deleted_#{plural}").dup end end
def_reader_normal(plural, hash)
click to toggle source
# File lib/cardmarket_cli/entities/deletable.rb, line 79 def def_reader_normal(plural, hash) define_method plural.to_s do instance_variable_set("@#{plural}", hash ? {} : []) unless instance_variable_defined? "@#{plural}" instance_variable_get("@#{plural}").dup end end