hensei-api/lib/granblue/importers/import_error.rb
Justin Edmund 7d164b540c
Adds documentation to some lib functions (#168)
* Add sigs and docs to transformers

* Add sigs and docs to downloaders

* Adds sigs and docs to importers
2025-01-18 03:09:29 -08:00

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