Sha256: 81ac85229f0529b6864202f1414b96c97d9d376748a9659ec258023f59f5725b

Contents?: true

Size: 1.67 KB

Versions: 15

Compression:

Stored size: 1.67 KB

Contents

include Card::Subcards::Args

def assign_attributes args={}
  args = prepare_assignment_args args

  assign_with_subcards args do
    assign_with_set_modules args do
      super prepare_assignment_params(args)
    end
  end
end

def assign_set_specific_attributes
  set_specific.each_pair do |name, value|
    send "#{name}=", value
  end
end

protected

module ClassMethods
  def assign_or_newish name, attributes, fetch_opts={}
    if (known_card = Card.fetch(name, fetch_opts))
      known_card.refresh.newish attributes
      known_card
    else
      Card.new attributes.merge(name: name)
    end
  end
end

def prepare_assignment_params args
  args = args.to_unsafe_h if args.respond_to?(:to_unsafe_h)
  params = ActionController::Parameters.new(args)
  params.permit!
  params[:db_content] = standardize_content(params[:db_content]) if params[:db_content]
  params
end

def prepare_assignment_args args
  @set_specific = {}
  return {} unless args

  args = args.symbolize_keys
  normalize_type_attributes args
  stash_set_specific_attributes args
  args
end

def assign_with_set_modules args
  return yield unless args[:name] || args[:type_id]

  refresh_set_modules { yield }
end

def assign_with_subcards args
  subcard_args = extract_subcard_args! args
  yield
  subcards.add subcard_args if subcard_args.present?
end

def refresh_set_modules
  reinclude_set_modules = @set_mods_loaded
  yield
  reset_patterns
  include_set_modules if reinclude_set_modules
end

def stash_set_specific_attributes args
  Card.set_specific_attributes.each do |key|
    set_specific[key] = args.delete(key) if args.key?(key)
  end
end

# 'set' refers to the noun not the verb
def set_specific
  @set_specific ||= {}
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
card-1.108.1 mod/core/set/all/assign_attributes.rb
card-1.108.0 mod/core/set/all/assign_attributes.rb
card-1.107.0 mod/core/set/all/assign_attributes.rb
card-1.106.0 mod/core/set/all/assign_attributes.rb
card-1.105.6 mod/core/set/all/assign_attributes.rb
card-1.105.5 mod/core/set/all/assign_attributes.rb
card-1.105.4 mod/core/set/all/assign_attributes.rb
card-1.105.3 mod/core/set/all/assign_attributes.rb
card-1.105.2.pre1 mod/core/set/all/assign_attributes.rb
card-1.105.2 mod/core/set/all/assign_attributes.rb
card-1.105.1 mod/core/set/all/assign_attributes.rb
card-1.105.0 mod/core/set/all/assign_attributes.rb
card-1.104.2 mod/core/set/all/assign_attributes.rb
card-1.104.1 mod/core/set/all/assign_attributes.rb
card-1.104.0 mod/core/set/all/assign_attributes.rb