Sha256: a7a47a001224c49048b45cf16541b678df1a3c33a984208c9041ab698af013ac

Contents?: true

Size: 1.74 KB

Versions: 17

Compression:

Stored size: 1.74 KB

Contents

module Cardio
  class Migration
    class Import
      class ImportData
        # handles card attributes for import
        module CardAttributes
          def card_attributes data
            card_attr = ::Set.new %i[name type codename file image]
            data.select { |k, v| v && card_attr.include?(k) }
          end

          def update_card_attributes card_data
            card_entry = find_card_attributes card_data[:name]
            # we only want strings and not the whole name objects
            # for name and type
            card_data[:name] = card_data[:name].to_s
            card_data[:type] = card_data[:type].to_s
            if card_entry
              card_entry.replace card_data
            else
              cards << card_data
            end
          end

          def update_attribute name, attr_key, attr_value
            card = find_card_attributes name
            return unless card

            card[attr_key] = attr_value
            card
          end

          def write_attributes
            File.write @path, @data.to_yaml
          rescue SystemCallError
            false
            # card.yml not written
          end

          def read_attributes
            ensure_path
            return { cards: [], remotes: {} } unless File.exist? @path

            YAML.load_file(@path).deep_symbolize_keys
          end

          def find_card_attributes name
            key = name.to_name.key
            cards.find do |attr|
              key == (attr[:key].present? ? attr[:key] : attr[:name].to_name.key)
            end
          end

          private

          def ensure_path
            dir = File.dirname(@path)
            FileUtils.mkpath dir unless Dir.exist? dir
          end
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
card-1.104.2 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.104.1 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.104.0 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.103.4 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.103.3 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.103.2 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.103.1 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.103.0 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.101.7 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.102.0 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.101.6 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.101.5 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.101.4 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.101.3 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.101.2 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.101.1 lib/cardio/migration/import/import_data/card_attributes.rb
card-1.101.0 lib/cardio/migration/import/import_data/card_attributes.rb