Class: GobstonesFeedbackHook::GobstonesExplainer
- Inherits:
-
Mumukit::Explainer
- Object
- Mumukit::Explainer
- GobstonesFeedbackHook::GobstonesExplainer
- Defined in:
- lib/feedback_hook.rb
Instance Method Summary collapse
- #explain_color_typo(_, result) ⇒ Object
- #explain_lower_builtin_procedure_typo(submission, result) ⇒ Object
- #explain_missing_closing_brace_before_procedure(submission, result) ⇒ Object
- #explain_program_before_closing_structure_when_no_program(submission, result) ⇒ Object
- #explain_program_before_closing_structure_when_program(submission, result) ⇒ Object
- #explain_program_has_a_name(submission, result) ⇒ Object
- #explain_program_has_no_opening_curly_brace(submission, result) ⇒ Object
- #explain_surplus_closing_brace(_, result) ⇒ Object
- #explain_upper_builtin_function_typo(submission, result) ⇒ Object
- #explain_upper_function_typo(submission, result) ⇒ Object
- #explain_upper_procedure_typo(submission, result) ⇒ Object
- #explain_upper_program_typo(submission, result) ⇒ Object
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 |