Class: GobstonesFeedbackHook::GobstonesExplainer

Inherits:
Mumukit::Explainer
  • Object
show all
Defined in:
lib/feedback_hook.rb

Instance Method Summary collapse

Instance Method Details

#explain_color_typo(_, result) ⇒ Object



92
93
94
95
96
97
98
# File 'lib/feedback_hook.rb', line 92

def explain_color_typo(_, result)
  if roja_not_defined?(result) || negra_not_defined?(result)
    (result.match color_not_defined).try do |it|
      { color: it[1], rectified_color: rectified_color(it[1]) }
    end
  end
end

#explain_lower_builtin_procedure_typo(submission, result) ⇒ Object



76
77
78
79
80
81
82
# File 'lib/feedback_hook.rb', line 76

def explain_lower_builtin_procedure_typo(submission, result)
  if open_paren_instead_of_assign?(result)
    (submission.match lower_builtin_procedure).try do |it|
      { lower: it[1][0...5], upper: it[1][0...5].capitalize }
    end
  end
end

#explain_missing_closing_brace_before_procedure(submission, result) ⇒ Object



68
69
70
71
72
73
74
# File 'lib/feedback_hook.rb', line 68

def explain_missing_closing_brace_before_procedure(submission, result)
  if procedure_instead_of_command?(result) && missing_brace_end?(submission)
    (error_line(result)).try do |it|
      { line: it[1] }
    end
  end
end

#explain_program_before_closing_structure_when_no_program(submission, result) ⇒ Object



32
33
34
35
36
37
38
39
40
# File 'lib/feedback_hook.rb', line 32

def explain_program_before_closing_structure_when_no_program(submission, result)
  if program_instead_of_command?(result) && missing_brace_end?(submission) && function_or_procedure?(submission)
    if /#{program}/ =~ submission
      nil
    else
      { keyword: last_function_or_procedure(submission) }
    end
  end
end

#explain_program_before_closing_structure_when_program(submission, result) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/feedback_hook.rb', line 24

def explain_program_before_closing_structure_when_program(submission, result)
  if program_instead_of_command?(result) && missing_brace_end?(submission) && function_or_procedure?(submission)
    (submission.match program).try do |it|
      { keyword: last_function_or_procedure(submission) }
    end
  end
end

#explain_program_has_a_name(submission, result) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/feedback_hook.rb', line 10

def explain_program_has_a_name(submission, result)
  if identifier_instead_of_brace? result
    (submission.match malformed_program_header_with_name).try do |it|
      { name: it[1] }
    end
  end
end

#explain_program_has_no_opening_curly_brace(submission, result) ⇒ Object



18
19
20
21
22
# File 'lib/feedback_hook.rb', line 18

def explain_program_has_no_opening_curly_brace(submission, result)
  if identifier_instead_of_brace? result
    /#{malformed_program_header_with_no_curly_braces}/ =~ submission
  end
end

#explain_surplus_closing_brace(_, result) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/feedback_hook.rb', line 42

def explain_surplus_closing_brace(_, result)
  if unbalanced_closing_braces? result
    (error_line(result)).try do |it|
      { line: it[1] }
    end
  end
end

#explain_upper_builtin_function_typo(submission, result) ⇒ Object



84
85
86
87
88
89
90
# File 'lib/feedback_hook.rb', line 84

def explain_upper_builtin_function_typo(submission, result)
  if procedure_invocation_instead_of_expression?(result)
    (submission.match upper_builtin_function).try do |it|
      { upper: it[1], lower: it[1].camelize(:lower) }
    end
  end
end

#explain_upper_function_typo(submission, result) ⇒ Object



50
51
52
53
54
# File 'lib/feedback_hook.rb', line 50

def explain_upper_function_typo(submission, result)
  if upper_identifier_instead_of_definition? result
    /#{uppercase_function}/ =~ submission
  end
end

#explain_upper_procedure_typo(submission, result) ⇒ Object



56
57
58
59
60
# File 'lib/feedback_hook.rb', line 56

def explain_upper_procedure_typo(submission, result)
  if upper_identifier_instead_of_definition? result
    /#{uppercase_procedure}/ =~ submission
  end
end

#explain_upper_program_typo(submission, result) ⇒ Object



62
63
64
65
66
# File 'lib/feedback_hook.rb', line 62

def explain_upper_program_typo(submission, result)
  if upper_identifier_instead_of_definition? result
    /#{uppercase_program}/ =~ submission
  end
end