contrek 1.2.7 → 1.2.9

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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/.rubocop.yml +11 -0
  4. data/CHANGELOG.md +7 -1
  5. data/Gemfile +2 -0
  6. data/Gemfile.lock +1 -1
  7. data/README.md +1 -1
  8. data/Rakefile +2 -0
  9. data/contrek.gemspec +2 -0
  10. data/ext/cpp_polygon_finder/PolygonFinder/CMakeLists.txt +2 -2
  11. data/ext/cpp_polygon_finder/PolygonFinder/src/Tests.cpp +108 -1
  12. data/ext/cpp_polygon_finder/PolygonFinder/src/Tests.h +1 -0
  13. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/PolygonFinder.h +73 -6
  14. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/Finder.h +1 -1
  15. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/Polyline.cpp +6 -6
  16. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/Polyline.h +3 -2
  17. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/StreamingMerger.cpp +114 -0
  18. data/ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/StreamingMerger.h +41 -0
  19. data/ext/cpp_polygon_finder/cpp_polygon_finder.cpp +52 -2
  20. data/ext/cpp_polygon_finder/extconf.rb +2 -0
  21. data/lib/contrek/bitmaps/bitmap.rb +2 -0
  22. data/lib/contrek/bitmaps/chunky_bitmap.rb +2 -0
  23. data/lib/contrek/bitmaps/painting.rb +2 -0
  24. data/lib/contrek/bitmaps/png_bitmap.rb +2 -0
  25. data/lib/contrek/bitmaps/raw_bitmap.rb +2 -0
  26. data/lib/contrek/bitmaps/rgb_color.rb +2 -0
  27. data/lib/contrek/bitmaps/rgb_cpp_color.rb +2 -0
  28. data/lib/contrek/bitmaps/sample_generator.rb +2 -0
  29. data/lib/contrek/cpp/cpp_concurrent_finder.rb +2 -0
  30. data/lib/contrek/cpp/cpp_concurrent_horizontal_merger.rb +2 -0
  31. data/lib/contrek/cpp/cpp_concurrent_merger.rb +2 -0
  32. data/lib/contrek/cpp/cpp_concurrent_streaming_merger.rb +11 -0
  33. data/lib/contrek/cpp/cpp_concurrent_vertical_merger.rb +2 -0
  34. data/lib/contrek/cpp/cpp_result.rb +2 -0
  35. data/lib/contrek/cpp/cpp_tempfile.rb +28 -0
  36. data/lib/contrek/finder/bounds.rb +2 -0
  37. data/lib/contrek/finder/concurrent/clipped_polygon_finder.rb +2 -0
  38. data/lib/contrek/finder/concurrent/cluster.rb +2 -0
  39. data/lib/contrek/finder/concurrent/cursor.rb +2 -0
  40. data/lib/contrek/finder/concurrent/end_point.rb +2 -0
  41. data/lib/contrek/finder/concurrent/fake_cluster.rb +2 -0
  42. data/lib/contrek/finder/concurrent/finder.rb +2 -0
  43. data/lib/contrek/finder/concurrent/horizontal_merger.rb +2 -0
  44. data/lib/contrek/finder/concurrent/hub.rb +2 -0
  45. data/lib/contrek/finder/concurrent/inner_polyline.rb +2 -0
  46. data/lib/contrek/finder/concurrent/listable.rb +2 -0
  47. data/lib/contrek/finder/concurrent/merger.rb +3 -0
  48. data/lib/contrek/finder/concurrent/part.rb +2 -0
  49. data/lib/contrek/finder/concurrent/partitionable.rb +2 -0
  50. data/lib/contrek/finder/concurrent/polyline.rb +2 -0
  51. data/lib/contrek/finder/concurrent/poolable.rb +2 -0
  52. data/lib/contrek/finder/concurrent/position.rb +2 -0
  53. data/lib/contrek/finder/concurrent/queueable.rb +2 -0
  54. data/lib/contrek/finder/concurrent/sequence.rb +2 -0
  55. data/lib/contrek/finder/concurrent/shape.rb +2 -0
  56. data/lib/contrek/finder/concurrent/streaming_merger.rb +89 -0
  57. data/lib/contrek/finder/concurrent/tile.rb +2 -0
  58. data/lib/contrek/finder/concurrent/vertical_merger.rb +4 -2
  59. data/lib/contrek/finder/list.rb +2 -0
  60. data/lib/contrek/finder/list_entry.rb +2 -0
  61. data/lib/contrek/finder/listable.rb +2 -0
  62. data/lib/contrek/finder/lists.rb +2 -0
  63. data/lib/contrek/finder/node.rb +2 -0
  64. data/lib/contrek/finder/node_cluster.rb +3 -1
  65. data/lib/contrek/finder/polygon_finder.rb +2 -0
  66. data/lib/contrek/finder/result.rb +2 -0
  67. data/lib/contrek/map/mercator_projection.rb +2 -0
  68. data/lib/contrek/matchers/matcher.rb +2 -0
  69. data/lib/contrek/matchers/matcher_hsb.rb +2 -0
  70. data/lib/contrek/matchers/value_not_matcher.rb +2 -0
  71. data/lib/contrek/reducers/linear_reducer.rb +2 -0
  72. data/lib/contrek/reducers/reducer.rb +2 -0
  73. data/lib/contrek/reducers/uniq_reducer.rb +2 -0
  74. data/lib/contrek/reducers/visvalingam_reducer.rb +2 -0
  75. data/lib/contrek/shared/result.rb +2 -0
  76. data/lib/contrek/version.rb +3 -1
  77. data/lib/contrek.rb +5 -0
  78. metadata +8 -2
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Bitmaps
3
5
  class Bitmap
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Bitmaps
3
5
  class ChunkyBitmap < Bitmap
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Bitmaps
3
5
  module Painting
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "chunky_png"
2
4
 
3
5
  module Contrek
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Bitmaps
3
5
  class RawBitmap < PngBitmap
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Bitmaps
3
5
  class RgbColor
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Bitmaps
3
5
  class RgbCppColor
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Bitmaps
3
5
  class SampleGenerator
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Cpp
3
5
  class CPPConcurrentFinder < CPPFinder
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Cpp
3
5
  class CPPConcurrentHorizontalMerger < CPPHorizontalMerger
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Cpp
3
5
  class CPPConcurrentMerger < CPPMerger
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Contrek
4
+ module Cpp
5
+ class CPPConcurrentStreamingMerger < CPPStreamingMerger
6
+ def self.new(stream_to:, total_width:, total_height:, number_of_threads: 0, options: nil)
7
+ super(number_of_threads, options, stream_to, total_width, total_height)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Cpp
3
5
  class CPPConcurrentVerticalMerger < CPPVerticalMerger
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Cpp
3
5
  class CPPResult
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Contrek
4
+ module Cpp
5
+ class CPPTempfile < CPPOfstream
6
+ def self.new(name)
7
+ require "tempfile"
8
+ tempfile = Tempfile.new(name)
9
+ instance = super(tempfile.path)
10
+ instance.instance_variable_set(:@tempfile, tempfile)
11
+ instance
12
+ end
13
+
14
+ def path
15
+ @tempfile.path
16
+ end
17
+
18
+ def close
19
+ super
20
+ @tempfile.close
21
+ end
22
+
23
+ def unlink
24
+ @tempfile.unlink
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  Bounds = Struct.new(:min_x, :max_x, :min_y, :max_y) do
2
4
  def self.empty
3
5
  new(Float::INFINITY, -Float::INFINITY, Float::INFINITY, -Float::INFINITY)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class ClippedPolygonFinder < Finder::PolygonFinder
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class Cluster
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class Cursor
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class EndPoint
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class FakeCluster < Finder::NodeCluster
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class Finder
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class HorizontalMerger < Merger
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class Hub
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class InnerPolyline
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  module Listable
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class Merger < Finder
6
+ attr_reader :tiles
4
7
  prepend Poolable
5
8
 
6
9
  def initialize(options: {})
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class Part
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  module Partitionable
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class Polyline
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "concurrent-ruby"
2
4
 
3
5
  module Contrek
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class Position
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  module Queueable
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class Sequence
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class Shape
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Contrek
4
+ module Concurrent
5
+ class StreamingMerger < VerticalMerger
6
+ def initialize(stream_to:, total_width:, total_height:, options: {})
7
+ @stream = stream_to
8
+ @total_width = total_width
9
+ @total_height = total_height
10
+ @moved = 0
11
+ super(options: options)
12
+ end
13
+
14
+ def add_tile(result, flush = false)
15
+ super(result)
16
+
17
+ if @tiles.size == 2
18
+ process_tiles!(nil, height: @height)
19
+ @tiles << @whole_tile
20
+ stream_polygons!(@whole_tile, flush)
21
+ end
22
+ end
23
+
24
+ def process_info
25
+ result = super
26
+ result.metadata[:groups] = @moved
27
+ result
28
+ end
29
+
30
+ private
31
+
32
+ def stream_polygons!(tile, flush = false)
33
+ ensure_header
34
+
35
+ tile.shapes.select! do |shape|
36
+ bounds = shape.outer_polyline.get_bounds
37
+ if flush || bounds[:max_x] < tile.end_x - 1
38
+ @moved += 1
39
+ stream_raw_polygon(shape)
40
+ false
41
+ else
42
+ true
43
+ end
44
+ end
45
+
46
+ ensure_footer if flush
47
+ end
48
+
49
+ def stream_raw_polygon(shape)
50
+ outer_pts = shape.outer_polyline.raw.map { |p| "#{p[:y]},#{p[:x]}" }.join(" ")
51
+ @stream.write(svg_outer_polygon(outer_pts))
52
+ shape.inner_polylines.map(&:raw).each do |sequence|
53
+ inner_pts = sequence.map { |p| "#{p[:y]},#{p[:x]}" }.join(" ")
54
+ @stream.write(svg_inner_polygon(inner_pts))
55
+ end
56
+ end
57
+
58
+ def ensure_header
59
+ if @stream.pos == 0
60
+ @stream.write(svg_header)
61
+ end
62
+ end
63
+
64
+ def ensure_footer
65
+ @stream.write(svg_footer)
66
+ end
67
+
68
+ def svg_footer
69
+ "</svg>"
70
+ end
71
+
72
+ def svg_header
73
+ "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"#{@total_width}\" height=\"#{@total_height}\"><style>#{svg_css}</style>"
74
+ end
75
+
76
+ def svg_outer_polygon(outer_pts)
77
+ "<polygon points=\"#{outer_pts}\" class=\"out\"/>"
78
+ end
79
+
80
+ def svg_inner_polygon(inner_pts)
81
+ "<polygon points=\"#{inner_pts}\" class=\"in\"/>"
82
+ end
83
+
84
+ def svg_css
85
+ ".out{fill:none;stroke:red;stroke-width:1;}.in{fill:none;stroke:green;stroke-width:1;}.out:hover{stroke:yellow;}"
86
+ end
87
+ end
88
+ end
89
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class Tile
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Concurrent
3
5
  class VerticalMerger < Merger
@@ -10,8 +12,8 @@ module Contrek
10
12
  super
11
13
  end
12
14
 
13
- def process_info
14
- transpose(super)
15
+ def process_info(flush: false)
16
+ transpose(super())
15
17
  end
16
18
 
17
19
  private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Finder
3
5
  class List
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Finder
3
5
  class ListEntry
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Finder
3
5
  module Listable
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Finder
3
5
  class Lists
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Finder
3
5
  class Node
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Finder
3
5
  class NodeCluster
@@ -286,7 +288,7 @@ module Contrek
286
288
  @root_nodes << node
287
289
 
288
290
  if node.y > 0
289
- # all nodes untle up_node.max_x >= node.min_x
291
+ # all nodes until up_node.max_x >= node.min_x
290
292
  up_nodes = @vert_nodes[node.y - 1]
291
293
  up_nodes_count = up_nodes.size
292
294
  if up_nodes_count > 0
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "benchmark"
2
4
 
3
5
  module Contrek
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Finder
3
5
  Result = Struct.new(:polygons, :metadata) do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Map
2
4
  class MercatorProjection
3
5
  MERCATOR_RANGE = 256
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Matchers
3
5
  class Matcher
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Matchers
3
5
  class MatcherHsb < Matcher
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Matchers
3
5
  class ValueNotMatcher < Matcher
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Reducers
3
5
  class LinearReducer < Reducer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Reducers
3
5
  class Reducer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Reducers
3
5
  class UniqReducer < Reducer
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # https://bost.ocks.org/mike/simplify/
2
4
  # https://github.com/metteo/jts/blob/master/jts-core/src/main/java/com/vividsolutions/jts/simplify/VWLineSimplifier.java
3
5
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
4
  module Shared
3
5
  module Result
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Contrek
2
- VERSION = "1.2.7"
4
+ VERSION = "1.2.9"
3
5
  end
data/lib/contrek.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "contrek/version"
2
4
  require "contrek/bitmaps/painting"
3
5
  require "contrek/bitmaps/bitmap"
@@ -37,6 +39,7 @@ require "contrek/finder/concurrent/finder"
37
39
  require "contrek/finder/concurrent/merger"
38
40
  require "contrek/finder/concurrent/horizontal_merger"
39
41
  require "contrek/finder/concurrent/vertical_merger"
42
+ require "contrek/finder/concurrent/streaming_merger"
40
43
  require "contrek/finder/concurrent/cursor"
41
44
  require "contrek/map/mercator_projection"
42
45
  require "contrek/matchers/matcher"
@@ -51,6 +54,8 @@ require "contrek/cpp/cpp_concurrent_finder"
51
54
  require "contrek/cpp/cpp_concurrent_merger"
52
55
  require "contrek/cpp/cpp_concurrent_horizontal_merger"
53
56
  require "contrek/cpp/cpp_concurrent_vertical_merger"
57
+ require "contrek/cpp/cpp_concurrent_streaming_merger"
58
+ require "contrek/cpp/cpp_tempfile"
54
59
  require "contrek/cpp/cpp_result"
55
60
 
56
61
  module Contrek
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: contrek
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.7
4
+ version: 1.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emanuele Cesaroni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-06-02 00:00:00.000000000 Z
11
+ date: 2026-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -132,6 +132,7 @@ extra_rdoc_files: []
132
132
  files:
133
133
  - ".gitignore"
134
134
  - ".rspec"
135
+ - ".rubocop.yml"
135
136
  - CHANGELOG.md
136
137
  - Gemfile
137
138
  - Gemfile.lock
@@ -215,6 +216,8 @@ files:
215
216
  - ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/Shape.h
216
217
  - ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/ShapePool.cpp
217
218
  - ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/ShapePool.h
219
+ - ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/StreamingMerger.cpp
220
+ - ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/StreamingMerger.h
218
221
  - ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/Tile.cpp
219
222
  - ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/Tile.h
220
223
  - ext/cpp_polygon_finder/PolygonFinder/src/polygon/finder/concurrent/VerticalMerger.cpp
@@ -251,8 +254,10 @@ files:
251
254
  - lib/contrek/cpp/cpp_concurrent_finder.rb
252
255
  - lib/contrek/cpp/cpp_concurrent_horizontal_merger.rb
253
256
  - lib/contrek/cpp/cpp_concurrent_merger.rb
257
+ - lib/contrek/cpp/cpp_concurrent_streaming_merger.rb
254
258
  - lib/contrek/cpp/cpp_concurrent_vertical_merger.rb
255
259
  - lib/contrek/cpp/cpp_result.rb
260
+ - lib/contrek/cpp/cpp_tempfile.rb
256
261
  - lib/contrek/finder/bounds.rb
257
262
  - lib/contrek/finder/concurrent/clipped_polygon_finder.rb
258
263
  - lib/contrek/finder/concurrent/cluster.rb
@@ -273,6 +278,7 @@ files:
273
278
  - lib/contrek/finder/concurrent/queueable.rb
274
279
  - lib/contrek/finder/concurrent/sequence.rb
275
280
  - lib/contrek/finder/concurrent/shape.rb
281
+ - lib/contrek/finder/concurrent/streaming_merger.rb
276
282
  - lib/contrek/finder/concurrent/tile.rb
277
283
  - lib/contrek/finder/concurrent/vertical_merger.rb
278
284
  - lib/contrek/finder/list.rb