21 lines
491 B
Ruby
21 lines
491 B
Ruby
class Whistleblower
|
|
PLACEHOLDER_REGEXP = /\$(\d)/
|
|
|
|
def find_hint(stderr)
|
|
@execution_environment.hints.detect do |hint|
|
|
@matches = Regexp.new(hint.regular_expression).match(stderr)
|
|
end
|
|
end
|
|
private :find_hint
|
|
|
|
def generate_hint(stderr)
|
|
if hint = find_hint(stderr)
|
|
hint.message.gsub(PLACEHOLDER_REGEXP) { @matches[Regexp.last_match(1).to_i] }
|
|
end
|
|
end
|
|
|
|
def initialize(options = {})
|
|
@execution_environment = options[:execution_environment]
|
|
end
|
|
end
|