Class: RubyQueryHook
- Inherits:
-
Mumukit::Templates::FileHook
- Object
- Mumukit::Templates::FileHook
- RubyQueryHook
- Defined in:
- lib/query_hook.rb
Instance Method Summary collapse
- #build_state(cookie) ⇒ Object
- #command_line(filename) ⇒ Object
- #compile_cookie(cookie) ⇒ Object
- #compile_file_content(r) ⇒ Object
- #compile_query(query) ⇒ Object
- #error_output?(result) ⇒ Boolean
- #post_process_file(_file, result, status) ⇒ Object
- #sanitize_error_output(result) ⇒ Object
- #tempfile_extension ⇒ Object
Instance Method Details
#build_state(cookie) ⇒ Object
50 51 52 53 54 55 56 57 58 59 |
# File 'lib/query_hook.rb', line 50 def build_state() (||[]).map do |statement| "begin\n \#{statement}\nrescue\nend\n" end end |
#command_line(filename) ⇒ Object
30 31 32 |
# File 'lib/query_hook.rb', line 30 def command_line(filename) "ruby #{filename}" end |
#compile_cookie(cookie) ⇒ Object
61 62 63 |
# File 'lib/query_hook.rb', line 61 def () build_state().join("\n") end |
#compile_file_content(r) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/query_hook.rb', line 8 def compile_file_content(r) " class MumukiConsole\n def self.write(string)\n end\n def self.enter_cookie!\n @@old_stdout = $stdout\n $stdout = MumukiConsole\n end\n def self.exit_cookie!\n $stdout = @@old_stdout\n end\n end\n \#{r.extra}\n \#{r.content}\n MumukiConsole.enter_cookie!\n \#{compile_cookie(r.cookie)}\n MumukiConsole.exit_cookie!\n \#{compile_query(r.query)}\n" end |
#compile_query(query) ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/query_hook.rb', line 42 def compile_query(query) if query.start_with? 'def ' "#{query}\nputs \"=> nil\"" else "print('=> ' + (#{query}).inspect)" end end |
#error_output?(result) ⇒ Boolean
65 66 67 |
# File 'lib/query_hook.rb', line 65 def error_output?(result) /\.rb:(\d)+:in `<main>': / =~ result end |
#post_process_file(_file, result, status) ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/query_hook.rb', line 34 def post_process_file(_file, result, status) if status == :failed && error_output?(result) [sanitize_error_output(result), status] else super end end |
#sanitize_error_output(result) ⇒ Object
69 70 71 |
# File 'lib/query_hook.rb', line 69 def sanitize_error_output(result) result.split("<main>': ").second end |
#tempfile_extension ⇒ Object
4 5 6 |
# File 'lib/query_hook.rb', line 4 def tempfile_extension '.rb' end |