* Add sigs and docs to transformers * Add sigs and docs to downloaders * Adds sigs and docs to importers
75 lines
2.4 KiB
Ruby
75 lines
2.4 KiB
Ruby
module Granblue
|
|
module Importers
|
|
# Custom error class for handling import-related exceptions
|
|
#
|
|
# @example Raising an import error
|
|
# raise ImportError.new(
|
|
# file_name: 'characters.csv',
|
|
# details: 'Missing required column: name_en'
|
|
# )
|
|
#
|
|
# @note This error provides detailed information about import failures
|
|
class ImportError < StandardError
|
|
# @return [String] The name of the file that caused the import error
|
|
attr_reader :file_name
|
|
|
|
# @return [String] Detailed information about the error
|
|
attr_reader :details
|
|
|
|
# Create a new ImportError instance
|
|
#
|
|
# @param file_name [String] The name of the file that caused the import error
|
|
# @param details [String] Detailed information about the error
|
|
# @example
|
|
# ImportError.new(
|
|
# file_name: 'weapons.csv',
|
|
# details: 'Invalid data in rarity column'
|
|
# )
|
|
def initialize(file_name:, details:)
|
|
@file_name = file_name
|
|
@details = details
|
|
super(build_message)
|
|
end
|
|
|
|
private
|
|
|
|
# Constructs a comprehensive error message
|
|
#
|
|
# @return [String] Formatted error message combining file name and details
|
|
# @example
|
|
# # Returns "Error importing weapons.csv: Invalid data in rarity column"
|
|
# build_message
|
|
def build_message
|
|
"Error importing #{file_name}: #{details}"
|
|
end
|
|
end
|
|
|
|
# Formats attributes into a human-readable string representation
|
|
#
|
|
# @param attributes [Hash] A hash of attributes to format
|
|
# @return [String] A formatted string with each attribute on a new line
|
|
# @example
|
|
# attributes = {
|
|
# name: 'Example Weapon',
|
|
# rarity: 5,
|
|
# elements: ['fire', 'water']
|
|
# }
|
|
# format_attributes(attributes)
|
|
# # Returns:
|
|
# # name: "Example Weapon"
|
|
# # rarity: 5
|
|
# # elements: ["fire", "water"]
|
|
# @note Handles various attribute types including arrays and nil values
|
|
def format_attributes(attributes)
|
|
attributes.map do |key, value|
|
|
formatted_value = case value
|
|
when Array
|
|
value.empty? ? '[]' : value.inspect
|
|
else
|
|
value.inspect
|
|
end
|
|
" #{key}: #{formatted_value}"
|
|
end.join("\n")
|
|
end
|
|
end
|
|
end
|