ipynbdiff 0.4.3 → 0.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4439ffa7f5fb1abc1243c5ab32d1196bb9bb37130c2a1eebe8461a4b0d1bf1bb
4
- data.tar.gz: 1767b4eccbc36b2644cc2c5c4b50589b0b967dff46e50b4898c328e171adc1f4
3
+ metadata.gz: ef1021a6b462ff49958069aea089dabfacd7ded6858bfc49c581dfcc03330405
4
+ data.tar.gz: 93ecedada6270a3f217349ef073b8f52950793e2f2197d2a0ca3254a5c2acd02
5
5
  SHA512:
6
- metadata.gz: 86fd17c557336d668abfd4677e1883b20d7af02c75afcfe2d4357149953c54520578afd1c7b902591746a3b1ba113778e1794026b57fe44fcf53fc66ace4ddb0
7
- data.tar.gz: 85b800b3776a519c471be72979a9a0ea186ad4a3251ff4276e2e732c9aed906fd8327ce9797ade66ada6734e248116e1b8338b6b035c607615b0fc21c602a136
6
+ metadata.gz: 29cedcb6c846d5d320425e9edf0f5f1a30bbbcdbcfaeb648b6568a6c884d60120c40926a8b30632eeff7d5892654c8b0ebe0433e9a8f03d14d2b8e6ad407ce4d
7
+ data.tar.gz: 85b7b9e9b3390f1484426bdb75143aebbf1f7bd2083b0c939df7d4e1e83a43f9346231c25f925ef9187ce54612ab7d202327f197c0cdb8916457913d226c9807
@@ -7,8 +7,8 @@ module IpynbDiff
7
7
  # Creates a symbol map for a ipynb file (JSON format)
8
8
  class IpynbSymbolMap
9
9
  class << self
10
- def parse(notebook)
11
- IpynbSymbolMap.new(notebook).parse('')
10
+ def parse(notebook, objects_to_ignore = [])
11
+ IpynbSymbolMap.new(notebook, objects_to_ignore).parse('')
12
12
  end
13
13
  end
14
14
 
@@ -18,11 +18,12 @@ module IpynbDiff
18
18
 
19
19
  VALUE_STOPPERS = [',', '[', ']', '{', '}', *WHITESPACE_CHARS].freeze
20
20
 
21
- def initialize(notebook)
21
+ def initialize(notebook, objects_to_ignore = [])
22
22
  @chars = notebook.chars
23
23
  @current_line = 0
24
24
  @char_idx = 0
25
25
  @results = {}
26
+ @objects_to_ignore = objects_to_ignore
26
27
  end
27
28
 
28
29
  def parse(prefix = '.')
@@ -69,11 +70,7 @@ module IpynbDiff
69
70
  loop do
70
71
  break if skip_beginning('}')
71
72
 
72
- prop_name = parse_string
73
-
74
- new_prefix = "#{prefix}.#{prop_name}"
75
-
76
- add_result(new_prefix, current_line)
73
+ prop_name = parse_string(return_value: true)
77
74
 
78
75
  next_and_skip_whitespaces
79
76
 
@@ -81,11 +78,19 @@ module IpynbDiff
81
78
 
82
79
  next_and_skip_whitespaces
83
80
 
84
- parse(new_prefix)
81
+ if @objects_to_ignore.include? prop_name
82
+ skip
83
+ else
84
+ new_prefix = "#{prefix}.#{prop_name}"
85
+
86
+ add_result(new_prefix, current_line)
87
+
88
+ parse(new_prefix)
89
+ end
85
90
  end
86
91
  end
87
92
 
88
- def parse_string
93
+ def parse_string(return_value: false)
89
94
  current_should_be '"'
90
95
  init_idx = @char_idx
91
96
 
@@ -100,7 +105,7 @@ module IpynbDiff
100
105
  end
101
106
  end
102
107
 
103
- @chars[init_idx...@char_idx].join
108
+ @chars[init_idx...@char_idx].join if return_value
104
109
  end
105
110
 
106
111
  def add_result(key, line_number)
@@ -143,6 +148,45 @@ module IpynbDiff
143
148
  @current_line += 1 if current_char == "\n"
144
149
  end
145
150
 
151
+ def skip
152
+ skip_whitespaces
153
+
154
+ if (c = current_char) == '"'
155
+ parse_string
156
+ elsif c == '['
157
+ skip_array
158
+ elsif c == '{'
159
+ skip_object
160
+ else
161
+ parse_value
162
+ end
163
+ end
164
+
165
+ def skip_array
166
+ loop do
167
+ break if skip_beginning(']')
168
+
169
+ skip
170
+ end
171
+ end
172
+
173
+ def skip_object
174
+
175
+ loop do
176
+ break if skip_beginning('}')
177
+
178
+ parse_string
179
+
180
+ next_and_skip_whitespaces
181
+
182
+ current_should_be ':'
183
+
184
+ next_and_skip_whitespaces
185
+
186
+ skip
187
+ end
188
+ end
189
+
146
190
  def skip_beginning(closing_char)
147
191
 
148
192
  check_for_new_line
data/lib/transformer.rb CHANGED
@@ -15,6 +15,7 @@ module IpynbDiff
15
15
  include SymbolizedMarkdownHelper
16
16
 
17
17
  @include_frontmatter = true
18
+ @objects_to_ignore = ['application/javascript', 'application/vnd.holoviews_load.v0+json']
18
19
 
19
20
  def initialize(include_frontmatter: true)
20
21
  @include_frontmatter = include_frontmatter
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # lib/emoticon/version.rb
2
2
 
3
3
  module IpynbDiff
4
- VERSION = "0.4.3"
4
+ VERSION = "0.4.4"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ipynbdiff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo Bonet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-04 00:00:00.000000000 Z
11
+ date: 2022-03-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: diffy