Module: IpynbDiff

Defined in:
lib/ipynbdiff.rb,
lib/transformer.rb

Overview

Human Readable Jupyter Diffs

Defined Under Namespace

Classes: InvalidNotebookError, Transformer

Class Method Summary collapse

Class Method Details

.diff(from_notebook, to_notebook, options = @default_diff_options) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/ipynbdiff.rb', line 34

def self.diff(
  from_notebook,
  to_notebook,
  options = @default_diff_options
)
  options = @default_diff_options.merge(options)

  from = prepare_input(from_notebook, options)
  to = prepare_input(to_notebook, options)

  d = Diffy::Diff.new(from, to, **options[:diff_opts]).to_s(options[:format])
  File.write(options[:write_output_to], d) if options[:write_output_to]
  d
rescue InvalidNotebookError
  raise if options[:raise_if_invalid_notebook]
end

.prepare_input(to_prepare, options) ⇒ Object



25
26
27
28
29
30
31
32
# File 'lib/ipynbdiff.rb', line 25

def self.prepare_input(to_prepare, options)
  return '' unless to_prepare

  prep = to_prepare
  prep = File.read(prep) if options[:sources_are_files]
  prep = transform(prep, raise_errors: TRUE, options: options[:transform_options]) if options[:preprocess_input]
  prep
end

.transform(notebook, raise_errors: FALSE, options: @default_transform_options) ⇒ Object



51
52
53
54
55
56
57
# File 'lib/ipynbdiff.rb', line 51

def self.transform(notebook, raise_errors: FALSE, options: @default_transform_options)
  options = @default_transform_options.merge(options)

  Transformer.new(**options).transform(notebook)
rescue InvalidNotebookError
  raise if raise_errors
end