class Mumukit::Explainer

Public Instance Methods

explain(content, test_results) click to toggle source
# File lib/mumukit/explainer.rb, line 4
def explain(content, test_results)
  content_type.enumerate(explanations(content, test_results))
end

Private Instance Methods

eval_explain(selector, key, content, test_results) click to toggle source
# File lib/mumukit/explainer.rb, line 21
def eval_explain(selector, key, content, test_results)
  send(selector, content, test_results).try do |it|
    {key: key, binding: it.is_a?(Hash) ? it : {}}
  end
end
eval_explain_methods(content, test_results) click to toggle source
# File lib/mumukit/explainer.rb, line 15
def eval_explain_methods(content, test_results)
  explain_methods
      .map { |selector, key| eval_explain(selector, key, content, test_results) }
      .compact
end
explain_methods() click to toggle source
# File lib/mumukit/explainer.rb, line 27
def explain_methods
  self.class
      .instance_methods(false)
      .flat_map { |it| it.to_s.captures(/explain_(.*)/).map { [it, $1] } }
      .compact
end
explanations(content, test_results) click to toggle source
# File lib/mumukit/explainer.rb, line 10
def explanations(content, test_results)
  eval_explain_methods(content, test_results)
      .map { |explain| I18n.t(explain[:key], **explain[:binding]) }
end