Sha256: cf44a234c62764a13a6960aee750c69c947dcbd79f0324f09dcab7b4fe5b2aae

Contents?: true

Size: 1.64 KB

Versions: 9

Compression:

Stored size: 1.64 KB

Contents

format :json do
  # returns an array of Hashes (each in export_item view)
  view :export, cache: :never do
    exporting_uniques do
      Array.wrap(render_export_item).concat(export_items_in_view(:export)).flatten
    end
  end

  def max_export_depth
    Env.params[:max_export_depth].present? ? Env.params[:max_export_depth].to_i : 2
  end

  # returns an array of Hashes (each in export_item view)
  view :export_items, cache: :never do
    exporting_uniques do
      export_items_in_view(:export).flatten
    end
  end

  # returns Hash with the essentials needed to import a card into a new database
  view :export_item do
    item = { name: card.name, type: card.type_name, content: card.content }
    item[:codename] = card.codename if card.codename
    track_exporting card
    item
  end

  def export_items_in_view view
    within_max_depth do
      valid_items_for_export.map do |item|
        nest item, view: view
      end
    end
  end

  def track_exporting card
    return unless @exported_keys

    @exported_keys << card.key
  end

  def exporting_uniques
    @exported_keys ||= inherit(:exported_keys) || ::Set.new
    yield
  end

  # prevent recursion
  def within_max_depth
    @export_depth ||= inherit(:export_depth).to_i + 1
    @export_depth > max_export_depth ? [] : yield
  end

  def items_for_export
    nest_chunks.map do |chunk|
      next if chunk.try :main?

      chunk.referee_card
    end.compact
  end

  def valid_items_for_export
    items_for_export.flatten.reject(&:blank?).uniq.find_all do |card|
      valid_export_card? card
    end
  end

  def valid_export_card? ecard
    ecard.real? && !@exported_keys.include?(ecard.key)
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
card-mod-format-0.13.4 set/all/export.rb
card-mod-format-0.13.3 set/all/export.rb
card-mod-format-0.13.2 set/all/export.rb
card-mod-format-0.13.1 set/all/export.rb
card-mod-format-0.13.0 set/all/export.rb
card-mod-format-0.11.7 set/all/export.rb
card-mod-format-0.12.0 set/all/export.rb
card-mod-format-0.11.6 set/all/export.rb
card-mod-format-0.11.5 set/all/export.rb