librtree 0.8.9 → 0.9.0

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rtree.rb +80 -68
  3. metadata +13 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d796bcdad6e023f99009363c9c11a10d8c6dfc7b9c797b487925fa319ace78b9
4
- data.tar.gz: 83d563781db1c1e1b6bd8b8790cbb68fbbd9a7f997dd49840ff8cba7bfcac3e8
3
+ metadata.gz: 91ab938275be940bbe12869b5b95266bdd32a503c5aae74ef84e242db8b65cd2
4
+ data.tar.gz: 981f9d121d65cb94f3ca42cd09c3841471d9c9c6c4176416d8de639f2ffe9922
5
5
  SHA512:
6
- metadata.gz: e1a6c56ad9c14ae15c8ed047e980262477f36b672bb08c5cc584eff7b2fba3b20845e8671ee166f8929abbb5a7d11e596cca36da6d89a67cef167773ada20577
7
- data.tar.gz: b699d85386e8ea991eb2d4e4816635b6a0d550e2dbeb36b670526186d0b72f72f8cf763d22ba6339fe595dc3f70c7d6f9e9bfa5714216ec125e0b1748c146d97
6
+ metadata.gz: 42764d0851e8ddab67468847fc08f8d148ad332a7b8e3d81f26a2eb50d8a79b0e2ac2cfb6e805c7f3d1bd2b17a5ed1bd52c89ed0001c88fb3c9c209fb879fe0f
7
+ data.tar.gz: a394efa120788677dbda6d409b07e1a1d6d234692f08ba6371dfbc99c0f82420e2f720214793c6944f0b652cc81739096b06ff5e8822ac5f18d8a0b3f70388ba
data/lib/rtree.rb CHANGED
@@ -1,8 +1,10 @@
1
- # The internal Ruby/C interface for RTree, not documented in YARD.
1
+ # frozen_string_literal: true
2
+
3
+ # @!visibility private
2
4
  #
3
5
  class RTreeBase ; end
4
6
 
5
- # The internal Ruby/C interface for RTree::Style, not documented in YARD.
7
+ # @!visibility private
6
8
  #
7
9
  class RTreeStyleBase ; end
8
10
 
@@ -62,25 +64,78 @@ require 'fcntl'
62
64
  #
63
65
  class RTree < RTreeBase
64
66
 
67
+ # @!visibility private
68
+ #
65
69
  module IOUtil
70
+ extend self
71
+
72
+ # @!visibility private
73
+ #
74
+ def deserialise(string, encoding)
75
+ raise TypeError unless string.is_a? String
76
+ rd, wr = IO.pipe(encoding)
77
+ if fork then
78
+ wr.close
79
+ unset_nonblock(rd)
80
+ begin
81
+ result = yield(rd)
82
+ ensure
83
+ rd.close
84
+ Process.wait
85
+ end
86
+ else
87
+ rd.close
88
+ begin
89
+ wr.write(string)
90
+ ensure
91
+ wr.close
92
+ exit!
93
+ end
94
+ end
95
+ result
96
+ end
97
+
98
+ # @!visibility private
99
+ #
100
+ def serialise(encoding)
101
+ rd, wr = IO.pipe(encoding)
102
+ if fork then
103
+ wr.close
104
+ unset_nonblock(rd)
105
+ begin
106
+ result = rd.read
107
+ ensure
108
+ rd.close
109
+ Process.wait
110
+ end
111
+ else
112
+ rd.close
113
+ begin
114
+ yield(wr)
115
+ ensure
116
+ wr.close
117
+ exit!
118
+ end
119
+ end
120
+ result
121
+ end
66
122
 
67
123
  private
68
124
 
69
125
  # In Ruby 3, the Fibres facility exploits non-blocking IO and so pipes
70
126
  # are non-blocking by default, this buggers-up the deserialise method
71
127
  # since there is short delay forking here -- so we reinstate blocking
72
- # with some fairly low-level fcntl)2) magick.
128
+ # with some fairly low-level fcntl(2) magic.
73
129
 
74
130
  def unset_nonblock(fd)
75
- flags0 = fd.fcntl(Fcntl::F_GETFL, 0)
76
- flags1 = flags0 & ~Fcntl::O_NONBLOCK
77
- fd.fcntl(Fcntl::F_SETFL, flags1)
131
+ fd.fcntl(
132
+ Fcntl::F_SETFL,
133
+ fd.fcntl(Fcntl::F_GETFL, 0) & ~Fcntl::O_NONBLOCK
134
+ )
78
135
  end
79
136
 
80
137
  end
81
138
 
82
- extend IOUtil
83
-
84
139
  class << self
85
140
 
86
141
  # Create a new RTree instance from JSON stream
@@ -201,29 +256,10 @@ class RTree < RTreeBase
201
256
 
202
257
  private
203
258
 
204
- def deserialise(string, encoding)
205
- raise TypeError unless string.is_a? String
206
- rd, wr = IO.pipe(encoding)
207
- unset_nonblock(rd)
208
- if fork then
209
- wr.close
210
- begin
211
- result = yield(rd)
212
- ensure
213
- rd.close
214
- Process.wait
215
- end
216
- else
217
- rd.close
218
- begin
219
- wr.write(string)
220
- ensure
221
- wr.close
222
- exit!
223
- end
224
- end
225
- result
259
+ def deserialise(*args, &block)
260
+ RTree::IOUtil.deserialise(*args, &block)
226
261
  end
262
+
227
263
  end
228
264
 
229
265
  # Initialize a new (empty) RTree
@@ -319,7 +355,7 @@ class RTree < RTreeBase
319
355
  # @return [Boolean] true if the RTree is empty
320
356
  #
321
357
  def empty?
322
- height == 0
358
+ height.zero?
323
359
  end
324
360
 
325
361
  # Serialise to JSON stream
@@ -434,6 +470,7 @@ class RTree < RTreeBase
434
470
  end
435
471
 
436
472
  # Create a PostScript plot of the RTree
473
+ #
437
474
  # @param io [IO] a writeable stream object
438
475
  # @param style [RTree::Style] a style object describing the fill
439
476
  # colour and stroke width and colour for each level of the tree.
@@ -445,6 +482,8 @@ class RTree < RTreeBase
445
482
  # @param margin [Float] extra space around the plot in units of
446
483
  # PostScript point (1/72 inch), default zero
447
484
  #
485
+ # rdoc-image:img/cb-bupu3.png
486
+ #
448
487
  def postscript(io, style, height: nil, width: nil, margin: 0)
449
488
  if height && width then
450
489
  raise ArgumentError, 'cannot specify both height and width'
@@ -475,21 +514,10 @@ class RTree < RTreeBase
475
514
  node_page_flag | split_flag
476
515
  end
477
516
 
478
- def serialise(encoding)
479
- rd, wr = IO.pipe(encoding)
480
- if fork then
481
- wr.close
482
- result = rd.read
483
- rd.close
484
- Process.wait
485
- else
486
- rd.close
487
- yield(wr)
488
- wr.close
489
- exit!
490
- end
491
- result
517
+ def serialise(*args, &block)
518
+ RTree::IOUtil.serialise(*args, &block)
492
519
  end
520
+
493
521
  end
494
522
 
495
523
  # @author RTree::Style J. J. Green
@@ -499,8 +527,6 @@ end
499
527
  #
500
528
  class RTree::Style < RTreeStyleBase
501
529
 
502
- extend RTree::IOUtil
503
-
504
530
  class << self
505
531
 
506
532
  # Create a new Style instance from JSON stream
@@ -521,27 +547,7 @@ class RTree::Style < RTreeStyleBase
521
547
  # @see .json_read
522
548
  #
523
549
  def from_json(json)
524
- raise TypeError unless json.is_a? String
525
- rd, wr = IO.pipe(Encoding::UTF_8)
526
- unset_nonblock(rd)
527
- if fork then
528
- wr.close
529
- begin
530
- result = json_read(rd)
531
- ensure
532
- rd.close
533
- Process.wait
534
- end
535
- else
536
- rd.close
537
- begin
538
- wr.write(json)
539
- ensure
540
- wr.close
541
- exit!
542
- end
543
- end
544
- result
550
+ deserialise(json, Encoding::UTF_8) { |io| json_read(io) }
545
551
  end
546
552
 
547
553
  # Create a new Style instance from array of Hash
@@ -570,5 +576,11 @@ class RTree::Style < RTreeStyleBase
570
576
 
571
577
  alias_method :from_array, :from_a
572
578
 
579
+ private
580
+
581
+ def deserialise(*args, &block)
582
+ RTree::IOUtil.deserialise(*args, &block)
583
+ end
584
+
573
585
  end
574
586
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: librtree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.9
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - J.J. Green
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-24 00:00:00.000000000 Z
11
+ date: 2021-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2'
19
+ version: '2.1'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2'
26
+ version: '2.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.6'
47
+ version: '3.10'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.6'
54
+ version: '3.10'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: yard
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -70,30 +70,30 @@ dependencies:
70
70
  name: rubygems-tasks
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "<="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.2.4
75
+ version: '0.2'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "<="
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.2.4
82
+ version: '0.2'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rake-compiler
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '1'
89
+ version: '1.1'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '1'
96
+ version: '1.1'
97
97
  description: |
98
98
  A Ruby extension implementing the R-tree spatial-index of
99
99
  Guttman-Green.
@@ -127,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  version: '0'
128
128
  requirements:
129
129
  - The librtree library (1.0.6 or later)
130
- rubygems_version: 3.2.3
130
+ rubygems_version: 3.1.2
131
131
  signing_key:
132
132
  specification_version: 4
133
133
  summary: R-tree spatial index