trivet 1.0 → 1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -1
  3. data/lib/trivet.rb +33 -38
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 816c724387a4e6931697972dc59868bce4032a3cc7df3064e84f9cf9d6dc9b87
4
- data.tar.gz: 33e2980a16a1e6575816635ee34c2273935bf185330c7ef2a190b399bc3a53ef
3
+ metadata.gz: b09cc26cad8b1fbc420bb6868a184dbd29d51816ad584deb8196c97d8a69b396
4
+ data.tar.gz: a70bbc909538386b6dc2e3fb18a7de6cb1d8c2220a40b961c8bba8c5ef7bda4f
5
5
  SHA512:
6
- metadata.gz: 15ad703f9a3977dad38e21b0e12159048fb348dc52beeeb79e03ce5bbd835b76bcaf887ee24e4ba18c1f846fac17fa027b643ce1cf1ea4553edf285f57dc442c
7
- data.tar.gz: 1fad0c2a2c2ca47839e48ced488964b5a13ac3474b6207f985b0d2a7de68b30f0320f63428709da92f01d6cb670e356854359a38b8eebdd8d9c5ca00d73c3f43
6
+ metadata.gz: 91990c0931cf9a24efc58ea659e78a29080b7cf66acd82677f79a6329e0debeb4483d9dcdaf45731e6bcbf3baa624eedecc09d31249d1911abfadb32fe4bdbc9
7
+ data.tar.gz: 3a2842b26cee8dfb2f2777220c03224274f37bf21e0412312efdddc2c15ad3aa8f22fc5e351bc10fe974dc756c7fdd6079a389a0a28a5f75dd327365db5289ec
data/README.md CHANGED
@@ -76,4 +76,5 @@ mike@idocs.com
76
76
 
77
77
  | version | date | notes |
78
78
  |---------|---------------|-------------------------------------------------------|
79
- | 1.0 | June 18, 2020 | Initial upload. |
79
+ | 1.0 | June 18, 2020 | Initial upload. |
80
+ | 1.1 | June 22, 2020 | Consolidated can_have_children? and can_have_child? into allow_child?. |
@@ -10,7 +10,7 @@ require 'forwardable'
10
10
  # Trivet::Node to learn about this package.
11
11
  module Trivet
12
12
  # Version
13
- VERSION = '1.0'
13
+ VERSION = '1.1'
14
14
 
15
15
  #---------------------------------------------------------------------------
16
16
  # query control constants
@@ -121,21 +121,6 @@ class Trivet::Node
121
121
  #---------------------------------------------------------------------------
122
122
 
123
123
 
124
- #---------------------------------------------------------------------------
125
- # can_have_children?
126
- #
127
-
128
- # This method indicates if the node can have any children. By default this
129
- # method always return true. Override this method in your own class to
130
- # set more fine grained rules.
131
- def can_have_children?
132
- return true
133
- end
134
- #
135
- # can_have_children?
136
- #---------------------------------------------------------------------------
137
-
138
-
139
124
  #---------------------------------------------------------------------------
140
125
  # parent=
141
126
  #
@@ -862,17 +847,37 @@ class Trivet::Node
862
847
 
863
848
 
864
849
  #---------------------------------------------------------------------------
865
- # can_have_child?
850
+ # shortcut to create allow_child? that returns false
851
+ #
852
+
853
+ # This method provides a concise way to override Trivet::Node#allow_child?
854
+ # so that it always returns false. Just add this to your class:
855
+ #
856
+ # self.no_children()
857
+ #
858
+ def self.no_children()
859
+ self.child_levels = []
860
+
861
+ self.define_method('allow_child?') do
862
+ return false
863
+ end
864
+ end
865
+ #
866
+ # shortcut to create allow_child? that returns false
867
+ #---------------------------------------------------------------------------
868
+
869
+
870
+ #---------------------------------------------------------------------------
871
+ # allow_child?
866
872
  #
867
873
 
868
- # This methd is called when a node or other object is to be set as the child
869
- # of the current node. By default, always returns true. Override this method
870
- # to create custom rules.
871
- def can_have_child?(child)
874
+ # This method is called when a node or other object is added to a node. By
875
+ # default, always returns true. Override this method to create custom rules.
876
+ def allow_child?(child)
872
877
  return true
873
878
  end
874
879
  #
875
- # can_have_child?
880
+ # allow_child?
876
881
  #---------------------------------------------------------------------------
877
882
 
878
883
 
@@ -937,8 +942,7 @@ end
937
942
 
938
943
  # Objects of this class act like an array of the children of a node. However,
939
944
  # unlike an array, attempts to add children result in calling
940
- # Trivet::Node#can_have_children? and Trivet::Node#can_have_child?
941
- # to check if the child is allowed.
945
+ # Trivet::Node#allow_child? to check if the child is allowed.
942
946
  class Trivet::Childset
943
947
  #---------------------------------------------------------------------------
944
948
  # delegate
@@ -1003,16 +1007,14 @@ class Trivet::Childset
1003
1007
  # methods for adding a child to the array
1004
1008
  #
1005
1009
 
1006
- # Adds a child to the end of the array. Calls
1007
- # Trivet::Node#can_have_children? and Trivet::Node#can_have_child? to
1010
+ # Adds a child to the end of the array. Calls Trivet::Node#allow_child? to
1008
1011
  # check if the child can be added. Does nothing if the node is already a
1009
1012
  # child.
1010
1013
  def push(new_child, opts={})
1011
1014
  return add_child new_child, 'last', opts
1012
1015
  end
1013
1016
 
1014
- # Adds a child to the end of the array. Calls
1015
- # Trivet::Node#can_have_children? and Trivet::Node#can_have_child? to
1017
+ # Adds a child to the end of the array. Calls Trivet::Node#allow_child? to
1016
1018
  # check if the child can be added. Does nothing if the node is already a
1017
1019
  # child.
1018
1020
  def append(new_child, opts={})
@@ -1024,16 +1026,14 @@ class Trivet::Childset
1024
1026
  return append(new_child)
1025
1027
  end
1026
1028
 
1027
- # Adds a child to the beginning of the array. Calls
1028
- # Trivet::Node#can_have_children? and Trivet::Node#can_have_child? to
1029
+ # Adds a child to the beginning of the array. Calls Trivet::Node#allow_child? to
1029
1030
  # check if the child can be added. Does nothing if the node is already a
1030
1031
  # child.
1031
1032
  def unshift(new_child, opts={})
1032
1033
  return add_child new_child, 'first', opts
1033
1034
  end
1034
1035
 
1035
- # Inserts the child at the position indicated by index. Calls
1036
- # Trivet::Node#can_have_children? and Trivet::Node#can_have_child? to
1036
+ # Inserts the child at the position indicated by index. Calls Trivet::Node#allow_child? to
1037
1037
  # check if the child can be added. Does nothing if the node is already a
1038
1038
  # child.
1039
1039
  def insert(index, new_child, opts={})
@@ -1166,12 +1166,7 @@ class Trivet::Childset
1166
1166
  opts = {'recurse'=>true}.merge(opts)
1167
1167
 
1168
1168
  # check if this parent is allowed to have this child
1169
- if not @node.can_have_children?
1170
- raise 'parent-cannot-have-children: ' + @node.to_s + ' / ' + new_child.to_s
1171
- end
1172
-
1173
- # check if this parent is allowed to have this child
1174
- if not @node.can_have_child?(new_child)
1169
+ if not @node.allow_child?(new_child)
1175
1170
  raise 'parent-cannot-have-this-child: ' + @node.to_s + ' / ' + new_child.to_s
1176
1171
  end
1177
1172
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trivet
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: '1.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike O'Sullivan