Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gems/ipynbdiff/lib/transformer.rb')
-rw-r--r--vendor/gems/ipynbdiff/lib/transformer.rb112
1 files changed, 0 insertions, 112 deletions
diff --git a/vendor/gems/ipynbdiff/lib/transformer.rb b/vendor/gems/ipynbdiff/lib/transformer.rb
deleted file mode 100644
index 9e666a20aa5..00000000000
--- a/vendor/gems/ipynbdiff/lib/transformer.rb
+++ /dev/null
@@ -1,112 +0,0 @@
-# frozen_string_literal: true
-
-module IpynbDiff
- require 'oj'
-
- class InvalidNotebookError < StandardError
- end
-
- # Returns a markdown version of the Jupyter Notebook
- class Transformer
- require 'json'
- require 'yaml'
- require 'output_transformer'
- require 'symbolized_markdown_helper'
- require 'symbol_map'
- require 'transformed_notebook'
- include SymbolizedMarkdownHelper
-
- @include_frontmatter = true
-
- def initialize(include_frontmatter: true, hide_images: false)
- @include_frontmatter = include_frontmatter
- @hide_images = hide_images
- @out_transformer = OutputTransformer.new(hide_images)
- end
-
- def validate_notebook(notebook)
- notebook_json = Oj::Parser.usual.parse(notebook)
-
- return notebook_json if notebook_json&.key?('cells')
-
- raise InvalidNotebookError
- rescue EncodingError, Oj::ParseError, JSON::ParserError
- raise InvalidNotebookError
- end
-
- def transform(notebook)
- return TransformedNotebook.new unless notebook
-
- notebook_json = validate_notebook(notebook)
- transformed = transform_document(notebook_json)
- symbol_map = SymbolMap.parse(notebook)
-
- TransformedNotebook.new(transformed, symbol_map)
- end
-
- def transform_document(notebook)
- symbol = JsonSymbol.new('.cells')
-
- transformed_blocks = notebook['cells'].map.with_index do |cell, idx|
- decorate_cell(transform_cell(cell, notebook, symbol / idx), cell, symbol / idx)
- end
-
- transformed_blocks.prepend(transform_metadata(notebook)) if @include_frontmatter
- transformed_blocks.flatten
- end
-
- def decorate_cell(rows, cell, symbol)
- tags = cell['metadata']&.fetch('tags', [])
- type = cell['cell_type'] || 'raw'
-
- [
- _(symbol, %(%% Cell type:#{type} id:#{cell['id']} tags:#{tags&.join(',')})),
- _,
- rows,
- _
- ]
- end
-
- def transform_cell(cell, notebook, symbol)
- cell['cell_type'] == 'code' ? transform_code_cell(cell, notebook, symbol) : transform_text_cell(cell, symbol)
- end
-
- def transform_code_cell(cell, notebook, symbol)
- [
- _(symbol / 'source', %(``` #{notebook.dig('metadata', 'kernelspec', 'language') || ''})),
- symbolize_array(symbol / 'source', cell['source'], &:rstrip),
- _(nil, '```'),
- transform_outputs(cell['outputs'], symbol)
- ]
- end
-
- def transform_outputs(outputs, symbol)
- transformed = outputs.map
- .with_index { |output, i| @out_transformer.transform(output, symbol / ['outputs', i]) }
- .compact
- .map { |el| [_, el] }
-
- [
- transformed.empty? ? [] : [_, _(symbol / 'outputs', '%% Output')],
- transformed
- ]
- end
-
- def transform_text_cell(cell, symbol)
- symbolize_array(symbol / 'source', cell['source'], &:rstrip)
- end
-
- def transform_metadata(notebook_json)
- as_yaml = {
- 'jupyter' => {
- 'kernelspec' => notebook_json['metadata']['kernelspec'],
- 'language_info' => notebook_json['metadata']['language_info'],
- 'nbformat' => notebook_json['nbformat'],
- 'nbformat_minor' => notebook_json['nbformat_minor']
- }
- }.to_yaml
-
- as_yaml.split("\n").map { |l| _(nil, l) }.append(_(nil, '---'), _)
- end
- end
-end