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.
- checksums.yaml +4 -4
- data/lib/rtree.rb +80 -68
- metadata +13 -13
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91ab938275be940bbe12869b5b95266bdd32a503c5aae74ef84e242db8b65cd2
|
4
|
+
data.tar.gz: 981f9d121d65cb94f3ca42cd09c3841471d9c9c6c4176416d8de639f2ffe9922
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 42764d0851e8ddab67468847fc08f8d148ad332a7b8e3d81f26a2eb50d8a79b0e2ac2cfb6e805c7f3d1bd2b17a5ed1bd52c89ed0001c88fb3c9c209fb879fe0f
|
7
|
+
data.tar.gz: a394efa120788677dbda6d409b07e1a1d6d234692f08ba6371dfbc99c0f82420e2f720214793c6944f0b652cc81739096b06ff5e8822ac5f18d8a0b3f70388ba
|
data/lib/rtree.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# @!visibility private
|
2
4
|
#
|
3
5
|
class RTreeBase ; end
|
4
6
|
|
5
|
-
#
|
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
|
128
|
+
# with some fairly low-level fcntl(2) magic.
|
73
129
|
|
74
130
|
def unset_nonblock(fd)
|
75
|
-
|
76
|
-
|
77
|
-
|
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(
|
205
|
-
|
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
|
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(
|
479
|
-
|
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
|
-
|
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.
|
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-
|
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.
|
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.
|
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
|
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
|
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
|
130
|
+
rubygems_version: 3.1.2
|
131
131
|
signing_key:
|
132
132
|
specification_version: 4
|
133
133
|
summary: R-tree spatial index
|