WhiteCloth 0.0.4 → 0.0.5
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.
- data/HISTORY +25 -8
- data/Rakefile +1 -0
- data/VERSION +1 -1
- data/WhiteCloth.gemspec +2 -2
- data/lib/data_structures/standard_node.rb +12 -7
- data/lib/data_structures/standard_tree.rb +7 -2
- data/test/data_structures/standard_tree_test.rb +7 -5
- metadata +3 -3
data/HISTORY
CHANGED
@@ -1,5 +1,26 @@
|
|
1
1
|
RELEASE HISTORY
|
2
2
|
|
3
|
+
v0.0.4 / 2011-05-17
|
4
|
+
|
5
|
+
Regenerate gemspec for version 0.0.4 (David Love david@homeunix.org.uk)
|
6
|
+
|
7
|
+
Changes:
|
8
|
+
|
9
|
+
* 6 Patch Enhancements
|
10
|
+
|
11
|
+
* Update the HISTORY file
|
12
|
+
* Added foundations for the Standard Tree, including tests.
|
13
|
+
* Add a next function to UUIDTools::UUID to allow the generation of sequential UUID's
|
14
|
+
* Added basic sanity tests for the Gibberish library
|
15
|
+
* Update HISTORY file after tagging a version
|
16
|
+
* Remove FluxTuna from the testing namespace
|
17
|
+
|
18
|
+
* 2 General Enhancements
|
19
|
+
|
20
|
+
* Version bump to 0.0.4
|
21
|
+
* Regenerate gemspec for version 0.0.2
|
22
|
+
|
23
|
+
|
3
24
|
v0.0.2 / 2011-05-16
|
4
25
|
|
5
26
|
Regenerate gemspec for version 0.0.2 (David Love david@homeunix.org.uk)
|
@@ -34,21 +55,17 @@ Changes:
|
|
34
55
|
* Initial commit to WhiteCloth.
|
35
56
|
|
36
57
|
|
37
|
-
HEAD / 2011-05-
|
58
|
+
HEAD / 2011-05-19
|
38
59
|
|
39
60
|
Current Development (David Love)
|
40
61
|
|
41
62
|
Changes:
|
42
63
|
|
43
|
-
*
|
64
|
+
* 1 Bugfix Enhancements
|
44
65
|
|
45
|
-
*
|
46
|
-
* Add a next function to UUIDTools::UUID to allow the generation of sequential UUID's
|
47
|
-
* Added basic sanity tests for the Gibberish library
|
48
|
-
* Update HISTORY file after tagging a version
|
49
|
-
* Remove FluxTuna from the testing namespace
|
66
|
+
* Changed the node adding logic to make the 'Node not found' case clearer, and updated the function documentation to point out a potential problem using argument hashes.
|
50
67
|
|
51
68
|
* 1 General Enhancements
|
52
69
|
|
53
|
-
* Regenerate gemspec for version 0.0.
|
70
|
+
* Regenerate gemspec for version 0.0.4
|
54
71
|
|
data/Rakefile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.5
|
data/WhiteCloth.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{WhiteCloth}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.5"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["David Love"]
|
12
|
-
s.date = %q{2011-05-
|
12
|
+
s.date = %q{2011-05-18}
|
13
13
|
s.default_executable = %q{whitecloth}
|
14
14
|
s.description = %q{See: http://research.homeunix.org.uk}
|
15
15
|
s.email = %q{david@homeunix.org.uk}
|
@@ -39,18 +39,23 @@ module WhiteCloth::DataStructures
|
|
39
39
|
self.add(child_node)
|
40
40
|
end
|
41
41
|
|
42
|
-
# Look for the designated block within tree starting at the current node.
|
42
|
+
# Look for the designated block within tree starting at the current node. If the +block_name+
|
43
|
+
# is +nil+ or +ROOT+, than we return the root of the current tree (i.e. ourselves).
|
43
44
|
def [] (block_name)
|
44
45
|
|
45
46
|
# We need to work out which node has the right content. Since
|
46
47
|
# the nodes are effectively unordered, we have to look (potentially)
|
47
48
|
# at every node
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
49
|
+
unless block_name.nil? or block_name == "ROOT"
|
50
|
+
self.each{|child|
|
51
|
+
if child.content === block_name then
|
52
|
+
return child
|
53
|
+
end
|
54
|
+
}
|
55
|
+
return nil
|
56
|
+
else
|
57
|
+
return self
|
58
|
+
end
|
54
59
|
end
|
55
60
|
|
56
61
|
###
|
@@ -51,14 +51,19 @@ module WhiteCloth::DataStructures
|
|
51
51
|
|
52
52
|
# Adds the specified nodes to the tree. The +node_list+ is a block, which is taken
|
53
53
|
# to be a hash of node names/node identities and the contents to add to the identified
|
54
|
-
# nodes.
|
54
|
+
# nodes. If the +block_name+ is +nil+ or +ROOT+, than we add to the root of the tree.
|
55
|
+
#
|
56
|
+
# @note: Since the argument list is a {Hash}, each node in the list *must* be unique.
|
57
|
+
# Otherwise later arguments will override earlier ones, and you *will not* get the
|
58
|
+
# behaviour you think.
|
55
59
|
def << (node_list)
|
56
60
|
Hash[*node_list.flatten].each{|parent, contents|
|
57
61
|
add_child(parent, contents)
|
58
62
|
}
|
59
63
|
end
|
60
64
|
|
61
|
-
# Look for the designated block within tree starting at the current node.
|
65
|
+
# Look for the designated block within tree starting at the current node. If the
|
66
|
+
# +block_name+ is +nil+ or +ROOT+, than we add to the root of the tree.
|
62
67
|
def [] (block_name)
|
63
68
|
return @nodes[block_name]
|
64
69
|
end
|
@@ -78,9 +78,9 @@ module Test::DataStructures
|
|
78
78
|
setup {
|
79
79
|
@root = StandardTree.new("b081eabd-8799-4885-8c4d-eb3cf76b30b4")
|
80
80
|
|
81
|
-
@root << {
|
82
|
-
@root << {nil => "Child 2"
|
83
|
-
@root << {nil => "Child 3", "Child
|
81
|
+
@root << {"ROOT" => "Child 1", nil => "Child 5"}
|
82
|
+
@root << {nil => "Child 2"}
|
83
|
+
@root << {nil => "Child 3", "Child 3" => "Grand Child 1"}
|
84
84
|
@root << {nil => "Child 4"}
|
85
85
|
@root << {"Child 4" => "Grand Child 2", "Grand Child 1" => "Great Grand Child 1"}
|
86
86
|
|
@@ -89,10 +89,12 @@ module Test::DataStructures
|
|
89
89
|
|
90
90
|
asserts("root's root is self") { topic[nil].root == topic[nil] }
|
91
91
|
asserts("child 1's root should be ROOT") { topic["Child 1"].root == topic[nil] }
|
92
|
-
asserts("child 4's root should be ROOT") { topic["Child 4"].root == topic[nil] }
|
92
|
+
asserts("child 4's root should be ROOT") { topic["Child 4"].root == topic[nil] }
|
93
|
+
asserts("child 2 is a kind of WhiteCloth::DataStructures::StandardNode") { topic["Child 2"].kind_of?(WhiteCloth::DataStructures::StandardNode) }
|
94
|
+
asserts("child 2's id (name)") { topic["Child 2"].id }.equals("b081eabd-8799-4885-8c4d-eb3cf76b30b7")
|
93
95
|
asserts("great grand child 1's parent should be \"Grand Child 1\"") { topic["Great Grand Child 1"].parent == topic["Grand Child 1"] }
|
94
96
|
denies("great grand child 1's parent should be \"Child 3\"") { topic["Great Grand Child 1"].parent == topic["Child 3"] }
|
95
|
-
asserts("root's height after adding the children") { topic[nil].node_height }.equals(
|
97
|
+
asserts("root's height after adding the children") { topic[nil].node_height }.equals(3)
|
96
98
|
end
|
97
99
|
|
98
100
|
context "Test the new nodes have no content" do
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: WhiteCloth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.0.
|
5
|
+
version: 0.0.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- David Love
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-18 00:00:00 +01:00
|
14
14
|
default_executable: whitecloth
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -282,7 +282,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
282
282
|
requirements:
|
283
283
|
- - ">="
|
284
284
|
- !ruby/object:Gem::Version
|
285
|
-
hash: -
|
285
|
+
hash: -1575231288095777273
|
286
286
|
segments:
|
287
287
|
- 0
|
288
288
|
version: "0"
|