Module: Legion::Notebook::Parser
- Defined in:
- lib/legion/notebook/parser.rb
Class Method Summary collapse
Class Method Details
.parse(path) ⇒ Object
8 9 10 11 12 13 14 15 16 |
# File 'lib/legion/notebook/parser.rb', line 8 def self.parse(path) data = ::JSON.parse(File.read(path)) { metadata: data['metadata'], kernel: data.dig('metadata', 'kernelspec', 'display_name'), language: data.dig('metadata', 'kernelspec', 'language') || 'python', cells: Array(data['cells']).map { |c| parse_cell(c) } } end |
.parse_cell(cell) ⇒ Object
18 19 20 21 22 23 24 |
# File 'lib/legion/notebook/parser.rb', line 18 def self.parse_cell(cell) { type: cell['cell_type'], source: Array(cell['source']).join, outputs: Array(cell.fetch('outputs', [])).map { |o| parse_output(o) } } end |
.parse_output(output) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/legion/notebook/parser.rb', line 26 def self.parse_output(output) text = case output['output_type'] when 'execute_result', 'display_data' data = output.fetch('data', {}) Array(data.fetch('text/plain', [])).join when 'error' "#{output['ename']}: #{output['evalue']}" else Array(output.fetch('text', [])).join end { output_type: output['output_type'], text: text } end |