Skip to content

Commit 265dbe1

Browse files
committed
fix: resolve RuboCop and Steep type check issues
Extract GSL and native matrix vector assignment into helper methods to reduce build_index method length below the 25-line threshold. Use anonymous block forwarding (&) per Ruby 3.1+ style preferences for the unlocked proxy methods.
1 parent 52d48ba commit 265dbe1

File tree

1 file changed

+32
-22
lines changed

1 file changed

+32
-22
lines changed

lib/classifier/lsi.rb

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -189,25 +189,11 @@ def build_index(cutoff = 0.75)
189189
tda_arrays = tda.map { |v| v.respond_to?(:to_a) ? v.to_a : v }
190190
tdm = self.class.matrix_class.alloc(*tda_arrays).trans
191191
ntdm = build_reduced_matrix(tdm, cutoff)
192-
193-
ntdm.size[1].times do |col|
194-
vec = self.class.vector_class.alloc(ntdm.column(col).to_a).row
195-
doc_list[col].lsi_vector = vec
196-
doc_list[col].lsi_norm = vec.normalize
197-
end
192+
assign_native_ext_lsi_vectors(ntdm, doc_list)
198193
else
199194
tdm = Matrix.rows(tda).trans
200195
ntdm = build_reduced_matrix(tdm, cutoff)
201-
202-
ntdm.column_size.times do |col|
203-
next unless doc_list[col]
204-
205-
column = ntdm.column(col)
206-
next unless column
207-
208-
doc_list[col].lsi_vector = column
209-
doc_list[col].lsi_norm = column.normalize
210-
end
196+
assign_ruby_lsi_vectors(ntdm, doc_list)
211197
end
212198

213199
@built_at_version = @version
@@ -381,6 +367,30 @@ def marshal_load(data)
381367

382368
private
383369

370+
# Assigns LSI vectors using native C extension
371+
# @rbs (untyped, Array[ContentNode]) -> void
372+
def assign_native_ext_lsi_vectors(ntdm, doc_list)
373+
ntdm.size[1].times do |col|
374+
vec = self.class.vector_class.alloc(ntdm.column(col).to_a).row
375+
doc_list[col].lsi_vector = vec
376+
doc_list[col].lsi_norm = vec.normalize
377+
end
378+
end
379+
380+
# Assigns LSI vectors using pure Ruby Matrix
381+
# @rbs (untyped, Array[ContentNode]) -> void
382+
def assign_ruby_lsi_vectors(ntdm, doc_list)
383+
ntdm.column_size.times do |col|
384+
next unless doc_list[col]
385+
386+
column = ntdm.column(col)
387+
next unless column
388+
389+
doc_list[col].lsi_vector = column
390+
doc_list[col].lsi_norm = column.normalize
391+
end
392+
end
393+
384394
# Unlocked version of needs_rebuild? for internal use when lock is already held
385395
# @rbs () -> bool
386396
def needs_rebuild_unlocked?
@@ -389,10 +399,10 @@ def needs_rebuild_unlocked?
389399

390400
# Unlocked version of proximity_array_for_content for internal use
391401
# @rbs (String) ?{ (String) -> String } -> Array[[String, Float]]
392-
def proximity_array_for_content_unlocked(doc, &block)
402+
def proximity_array_for_content_unlocked(doc, &)
393403
return [] if needs_rebuild_unlocked?
394404

395-
content_node = node_for_content_unlocked(doc, &block)
405+
content_node = node_for_content_unlocked(doc, &)
396406
result =
397407
@items.keys.collect do |item|
398408
val = if self.class.native_available?
@@ -407,10 +417,10 @@ def proximity_array_for_content_unlocked(doc, &block)
407417

408418
# Unlocked version of proximity_norms_for_content for internal use
409419
# @rbs (String) ?{ (String) -> String } -> Array[[String, Float]]
410-
def proximity_norms_for_content_unlocked(doc, &block)
420+
def proximity_norms_for_content_unlocked(doc, &)
411421
return [] if needs_rebuild_unlocked?
412422

413-
content_node = node_for_content_unlocked(doc, &block)
423+
content_node = node_for_content_unlocked(doc, &)
414424
result =
415425
@items.keys.collect do |item|
416426
val = if self.class.native_available?
@@ -425,9 +435,9 @@ def proximity_norms_for_content_unlocked(doc, &block)
425435

426436
# Unlocked version of vote for internal use
427437
# @rbs (String, ?Float) ?{ (String) -> String } -> Hash[String | Symbol, Float]
428-
def vote_unlocked(doc, cutoff = 0.30, &block)
438+
def vote_unlocked(doc, cutoff = 0.30, &)
429439
icutoff = (@items.size * cutoff).round
430-
carry = proximity_array_for_content_unlocked(doc, &block)
440+
carry = proximity_array_for_content_unlocked(doc, &)
431441
carry = carry[0..(icutoff - 1)]
432442
votes = {}
433443
carry.each do |pair|

0 commit comments

Comments
 (0)