Class: ChunkerRuby::SlidingWindow
- Inherits:
-
BaseSplitter
- Object
- BaseSplitter
- ChunkerRuby::SlidingWindow
- Defined in:
- lib/chunker_ruby/sliding_window.rb
Instance Attribute Summary
Attributes inherited from BaseSplitter
Instance Method Summary collapse
-
#initialize(stride: nil, **kwargs) ⇒ SlidingWindow
constructor
A new instance of SlidingWindow.
- #split(text, metadata: {}) ⇒ Object
Methods inherited from BaseSplitter
Constructor Details
#initialize(stride: nil, **kwargs) ⇒ SlidingWindow
Returns a new instance of SlidingWindow.
5 6 7 8 9 |
# File 'lib/chunker_ruby/sliding_window.rb', line 5 def initialize(stride: nil, **kwargs) super(**kwargs) @stride = stride || (@chunk_size - @chunk_overlap) raise ArgumentError, "stride must be positive" unless @stride > 0 end |
Instance Method Details
#split(text, metadata: {}) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/chunker_ruby/sliding_window.rb', line 11 def split(text, metadata: {}) return [] if text.nil? || text.empty? chunks = [] start = 0 while start < text.length end_pos = [start + @chunk_size, text.length].min chunk_text = text[start...end_pos] chunks << Chunk.new( text: chunk_text, index: chunks.size, offset: start, metadata: .dup ) break if end_pos >= text.length start += @stride end chunks end |