2017-11-13 17:14:51 +01:00

47 lines
1.4 KiB
Ruby

module Jekyll
module Algolia
# Display helpful error messages
module Logger
# Public: Displays a log line
#
# line - Line to display. Expected to be of the following format:
# "X:Your content"
# Where X is either I, W or E for marking respectively an info, warning or
# error display
def self.log(line)
type, content = /^(I|W|E):(.*)/.match(line).captures
logger_mapping = {
'E' => :error,
'I' => :info,
'W' => :warn
}
# Jekyll logger tries to center log lines, so we force a consistent
# width of 80 chars
content = content.ljust(80, ' ')
Jekyll.logger.send(logger_mapping[type], content)
end
# Public: Displays a helpful error message for one of the knows errors
#
# message_id: A string identifying a know message
#
# It will read files in ./errors/*.txt with the matching error and
# display them using Jekyll internal logger.
def self.known_message(message_id)
file = File.expand_path(
File.join(
File.dirname(__FILE__), '../../..', 'errors', "#{message_id}.txt"
)
)
# Display each line differently
lines = File.open(file).readlines.map(&:chomp)
lines.each do |line|
log(line)
end
end
end
end
end