Sha256: 22b9753893c6d48e0f3d98fec45a7bb8d128237e1c9798c0c3446ea0de2b293c

Contents?: true

Size: 1.84 KB

Versions: 12

Compression:

Stored size: 1.84 KB

Contents

include_set Pointer

event :validate_listed_by_name, :validate, on: :save, changed: :name do
  if !junction? || !right || right.type_id != CardtypeID
    errors.add :name, "must have a cardtype name as right part"
  end
end

event :validate_listed_by_content, :validate,
      on: :save, changed: :content do
  item_cards(content: content).each do |item_card|
    next unless item_card.type_id != right.id
    errors.add(
      :content,
      "#{item_card.name} has wrong cardtype; " \
      "only cards of type #{cardname.right} are allowed"
    )
  end
end

event :update_content_in_list_cards, :prepare_to_validate,
      on: :save, changed: :content do
  if content.present?
    new_items = item_keys(content: content)
    old_items = item_keys
    removed_items = old_items - new_items
    added_items   = new_items - old_items
    removed_items.each do |item|
      if (lc = list_card(item))
        lc.drop_item cardname.left
        subcards.add lc
      end
    end
    added_items.each do |item|
      if (lc = list_card(item))
        lc.add_item cardname.left
        subcards.add lc
      else
        subcards.add(
          name: "#{Card[item].name}+#{left.type_name}", type: "list",
          content: "[[#{cardname.left}]]"
        )
      end
    end
  end
end

def raw_content
  Card::Cache[Card::Set::Type::ListedBy].fetch(key) do
    generate_content
  end
end

def generate_content
  listed_by.map do |item|
    "[[%s]]" % item.to_name.left
  end.join "\n"
end

def listed_by
  Card.search(
    { type: "list", right: trunk.type_name,
      left: { type: cardname.tag }, refer_to: cardname.trunk, return: :name
      }, "listed_by" # better wql comment would be...better
  )
end

def update_cached_list
  Card::Cache[Card::Set::Type::ListedBy].write key, generate_content
end

def list_card item
  Card.fetch item, left.type_name
end

def unfilled?
  false
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
card-1.20.4 mod/standard/set/type/listed_by.rb
card-1.20.3 mod/standard/set/type/listed_by.rb
card-1.20.2 mod/standard/set/type/listed_by.rb
card-1.20.1 mod/standard/set/type/listed_by.rb
card-1.20.0 mod/standard/set/type/listed_by.rb
card-1.19.6 mod/standard/set/type/listed_by.rb
card-1.19.5 mod/standard/set/type/listed_by.rb
card-1.19.4 mod/standard/set/type/listed_by.rb
card-1.19.3 mod/standard/set/type/listed_by.rb
card-1.19.2 mod/standard/set/type/listed_by.rb
card-1.19.1 mod/standard/set/type/listed_by.rb
card-1.19.0 mod/standard/set/type/listed_by.rb