trivet 1.2 → 1.3
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/README.md +11 -3
- data/lib/trivet.rb +40 -13
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5fbcf1a7c9514f12a41ecaa45f4f1ba5bec3ccec08a2ea1d9c080d4d93f3e363
|
4
|
+
data.tar.gz: cf1e7334a9aa7184622c1dac9c55df342e72187390fce5d01de4772095ff91e1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8826eedd9ca3b47f572bee245675bee71629be643066151579b62dc461982f94f26e919891e53b4c258870eb5d5ce57293c647338c4ec3aa50e5e153b924240a
|
7
|
+
data.tar.gz: 6df953e0bfd143563ebfe50de94635940eb8066037f14ef5f0777e21671d9e889a2dd51fb57491c4ec34154290dbdc21118d79f279097f53bb7766da24e0157d
|
data/README.md
CHANGED
@@ -81,19 +81,19 @@ mike@idocs.com
|
|
81
81
|
<th>date</th>
|
82
82
|
<th>notes</th>
|
83
83
|
</tr>
|
84
|
-
|
84
|
+
|
85
85
|
<tr>
|
86
86
|
<td>1.0</td>
|
87
87
|
<td>June 18, 2020</td>
|
88
88
|
<td>Initial upload.</td>
|
89
89
|
</tr>
|
90
|
-
|
90
|
+
|
91
91
|
<tr>
|
92
92
|
<td>1.1</td>
|
93
93
|
<td>June 22, 2020</td>
|
94
94
|
<td>Consolidated can_have_children? and can_have_child? into allow_child?.</td>
|
95
95
|
</tr>
|
96
|
-
|
96
|
+
|
97
97
|
<tr>
|
98
98
|
<td>1.2</td>
|
99
99
|
<td>January 3, 2021</td>
|
@@ -101,5 +101,13 @@ mike@idocs.com
|
|
101
101
|
Added several methods to Trivet::Node: next_sibling, previous_sibling, have_child?, and move_child.
|
102
102
|
</td>
|
103
103
|
</tr>
|
104
|
+
|
105
|
+
<tr>
|
106
|
+
<td>1.3</td>
|
107
|
+
<td>January 4, 2021</td>
|
108
|
+
<td>
|
109
|
+
Renamed have_child? to have_object?. Renamed remove_child() to remove_object().
|
110
|
+
</td>
|
111
|
+
</tr>
|
104
112
|
|
105
113
|
</table>
|
data/lib/trivet.rb
CHANGED
@@ -11,7 +11,7 @@ require 'lx'
|
|
11
11
|
# Trivet::Node to learn about this package.
|
12
12
|
module Trivet
|
13
13
|
# Version
|
14
|
-
VERSION = '1.
|
14
|
+
VERSION = '1.3'
|
15
15
|
|
16
16
|
#---------------------------------------------------------------------------
|
17
17
|
# query control constants
|
@@ -72,7 +72,23 @@ end
|
|
72
72
|
class Trivet::Node
|
73
73
|
# delegate
|
74
74
|
extend Forwardable
|
75
|
-
|
75
|
+
|
76
|
+
# @!method have_object?(object)
|
77
|
+
# Returns true if the node has the given object as a child. This method is
|
78
|
+
# not quite the same as include?. This method returns true only if children
|
79
|
+
# contains the actual object given, not just an object that matches `==`.
|
80
|
+
# So, for example, the following use of have_object? would return false,
|
81
|
+
# even though it cohtains a string identical to the string in @children.
|
82
|
+
#
|
83
|
+
# node.add 'whatever'
|
84
|
+
# node.include? 'whatever' # true
|
85
|
+
# node.have_object? 'whatever' # false
|
86
|
+
|
87
|
+
# @!method remove_object(object)
|
88
|
+
# Removes the given object from children. Only the exact object is removed.
|
89
|
+
# If the object is a string, strings that are identical but not that actual
|
90
|
+
# object will *not* be removed.
|
91
|
+
delegate %w(remove_object have_object?) => :@children
|
76
92
|
|
77
93
|
|
78
94
|
#---------------------------------------------------------------------------
|
@@ -366,7 +382,7 @@ class Trivet::Node
|
|
366
382
|
# add
|
367
383
|
#
|
368
384
|
|
369
|
-
# A shortcut for adding children of any
|
385
|
+
# A shortcut for adding children of any arbitrary class. Takes zero or more
|
370
386
|
# params, each of which is an object.
|
371
387
|
|
372
388
|
def add(*objs)
|
@@ -593,7 +609,7 @@ class Trivet::Node
|
|
593
609
|
if @parent.is_a?(Trivet::Document)
|
594
610
|
@parent.set_root nil, 'recurse'=>false
|
595
611
|
elsif @parent.is_a?(Trivet::Node)
|
596
|
-
@parent.
|
612
|
+
@parent.remove_object self
|
597
613
|
else
|
598
614
|
raise 'unlink-unknown-parent-class: ' + @parent.class.to_
|
599
615
|
end
|
@@ -1052,7 +1068,7 @@ class Trivet::Node
|
|
1052
1068
|
|
1053
1069
|
def move_child(child, tgt)
|
1054
1070
|
# $tm.hrm
|
1055
|
-
@children.
|
1071
|
+
@children.remove_object child
|
1056
1072
|
tgt.add child
|
1057
1073
|
end
|
1058
1074
|
#
|
@@ -1190,12 +1206,12 @@ class Trivet::Childset
|
|
1190
1206
|
|
1191
1207
|
|
1192
1208
|
#---------------------------------------------------------------------------
|
1193
|
-
#
|
1209
|
+
# remove_object
|
1194
1210
|
#
|
1195
1211
|
|
1196
1212
|
# Removes the given child from the array of children. Does nothing if the
|
1197
1213
|
# child isn't present.
|
1198
|
-
def
|
1214
|
+
def remove_object(child, opts={})
|
1199
1215
|
# opts = {'recurse'=>true}.merge(opts)
|
1200
1216
|
|
1201
1217
|
@children.reject!() do |el|
|
@@ -1216,7 +1232,7 @@ class Trivet::Childset
|
|
1216
1232
|
@children.clear
|
1217
1233
|
end
|
1218
1234
|
#
|
1219
|
-
#
|
1235
|
+
# remove_object
|
1220
1236
|
#---------------------------------------------------------------------------
|
1221
1237
|
|
1222
1238
|
|
@@ -1282,7 +1298,7 @@ class Trivet::Childset
|
|
1282
1298
|
# loop through all
|
1283
1299
|
all.each do |child|
|
1284
1300
|
bool = yield(child)
|
1285
|
-
bool or
|
1301
|
+
bool or remove_object(child)
|
1286
1302
|
end
|
1287
1303
|
|
1288
1304
|
# return
|
@@ -1307,9 +1323,20 @@ class Trivet::Childset
|
|
1307
1323
|
|
1308
1324
|
|
1309
1325
|
#---------------------------------------------------------------------------
|
1310
|
-
#
|
1326
|
+
# have_object?
|
1311
1327
|
#
|
1312
|
-
|
1328
|
+
|
1329
|
+
# Returns true if the @children contains the given object. This method is
|
1330
|
+
# not quite the same as include?. This method returns true only if @children
|
1331
|
+
# contains the actual object given, not just an object that matches ==. So,
|
1332
|
+
# for example, the following use of have_object? would return false, even
|
1333
|
+
# though it cohtains a string identical to the string in @children.
|
1334
|
+
#
|
1335
|
+
# @children.push 'whatever'
|
1336
|
+
# @children.include? 'whatever' # true
|
1337
|
+
# @children.have_object? 'whatever' # false
|
1338
|
+
|
1339
|
+
def have_object?(potential)
|
1313
1340
|
@children.each_with_index do |child, idx|
|
1314
1341
|
if child.equal?(potential)
|
1315
1342
|
return idx
|
@@ -1319,7 +1346,7 @@ class Trivet::Childset
|
|
1319
1346
|
return false
|
1320
1347
|
end
|
1321
1348
|
#
|
1322
|
-
#
|
1349
|
+
# have_object?
|
1323
1350
|
#---------------------------------------------------------------------------
|
1324
1351
|
|
1325
1352
|
|
@@ -1348,7 +1375,7 @@ class Trivet::Childset
|
|
1348
1375
|
|
1349
1376
|
# add to children if not already there
|
1350
1377
|
# if dup_ok or (not @children.include?(new_child))
|
1351
|
-
if (not
|
1378
|
+
if (not have_object?(new_child))
|
1352
1379
|
# add to start of array
|
1353
1380
|
if index == 'first'
|
1354
1381
|
@children.unshift new_child
|