Skip to content

Commit a76f2c9

Browse files
committed
Added span sorting for static backup
1 parent f8f175d commit a76f2c9

File tree

1 file changed

+17
-6
lines changed
  • text_extensions_for_pandas/jupyter

1 file changed

+17
-6
lines changed

text_extensions_for_pandas/jupyter/span.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,25 +161,36 @@ def _get_initial_static_html(column: Union["SpanArray", "TokenSpanArray"],
161161

162162
# Generate a dictionary to store span information, including relationships with spans occupying the same region.
163163
spans = {}
164+
sorted_span_ids = []
164165
for i in range(len(document)):
165166

166167
span_data = {}
167168
span_data["id"] = i
168169
span_data["begin"] = document[i].begin
169170
span_data["end"] = document[i].end
170171
span_data["sets"] = []
172+
spans[i] = span_data
173+
174+
sorted_span_ids.append(i)
175+
176+
# Sort IDs
177+
sorted_span_ids.sort(key=lambda id: (spans[id]["begin"], -spans[id]["end"]))
171178

172-
for j in range(i+1, len(document)):
179+
for i in range(len(sorted_span_ids)):
180+
span_data = spans[sorted_span_ids[i]]
181+
182+
for j in range(i+1, len(sorted_span_ids)):
183+
sub_span_data = spans[sorted_span_ids[j]]
173184
# If the spans do not overlap, exit the sub-loop
174-
if(document[j].begin >= document[i].end):
185+
if(sub_span_data["begin"] >= span_data["end"]):
175186
break
176187
else:
177-
if(document[j].end <= document[i].end):
178-
span_data["sets"].append({"type": SetType.NESTED, "id": j})
188+
if(sub_span_data["end"] <= span_data["end"]):
189+
span_data["sets"].append({"type": SetType.NESTED, "id": sub_span_data["id"]})
179190
else:
180-
span_data["sets"].append({"type": SetType.OVERLAP, "id": j})
191+
span_data["sets"].append({"type": SetType.OVERLAP, "id": sub_span_data["id"]})
181192

182-
spans[i] = span_data
193+
spans[sorted_span_ids[i]] = span_data
183194

184195

185196
# Generate the table rows DOM string from span data.

0 commit comments

Comments
 (0)