tria 0.1.0 → 1.0.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 (2) hide show
  1. data/lib/tria.rb +25 -9
  2. metadata +1 -1
@@ -1,16 +1,20 @@
1
1
  =begin
2
2
  Tria is a multi-dimensional array based tree format, with a parent, child, and descendants
3
- for each branch of the tree.
3
+ for each branch of the tree. Tria was written by Solomon Wise.
4
4
  =end
5
- # Base class for the tree.
6
5
  class Tria
6
+
7
+ attr_reader :branches
7
8
  # Initializes a new tree
8
- def initialize(init_parent, child)
9
- @tree = [[init_parent, child]]
9
+ def initialize(init_parent, child, descendant)
10
+ @branches = 0
11
+ @tree = [[init_parent, child, descendant]]
12
+ @branches += 1
10
13
  end
11
14
  # Adds a new branch
12
- def add_branch(init_parent, child)
13
- @tree.push([init_parent, child])
15
+ def add_branch(init_parent, child, descendant)
16
+ @tree.push([init_parent, child, descendant])
17
+ @branches += 1
14
18
  end
15
19
  # Adds a new descendant
16
20
  def add_descendant(branch, descendant)
@@ -32,15 +36,19 @@ class Tria
32
36
  def descendants branch
33
37
  @tree[branch - 1][2..-1]
34
38
  end
35
- # Returns the parent of the left sibling
39
+ # Returns the parent of the previous sibling
36
40
  def before_sibling_parent branch
37
41
  @tree[branch - 2][0]
38
42
  end
39
- # Returns the child of the left sibling
43
+ # Returns the child of the previous sibling
40
44
  def before_sibling_child branch
41
45
  @tree[branch - 2][1]
42
46
  end
43
- # Returns the descendants of the left sibling
47
+ # Returns a certain descendant of the previous sibling
48
+ def next_sibling_descendant branch, number
49
+ @tree[branch - 2][number + 1]
50
+ end
51
+ # Returns the descendants of the previous sibling
44
52
  def before_sibling_descendants branch
45
53
  @tree[branch - 2][2..-1]
46
54
  end
@@ -52,6 +60,10 @@ class Tria
52
60
  def next_sibling_child branch
53
61
  @tree[branch][1]
54
62
  end
63
+ # Returns a certain descendant of the next sibling
64
+ def next_sibling_descendant branch, number
65
+ @tree[branch][number + 1]
66
+ end
55
67
  # Returns the next sibling's descendants
56
68
  def next_sibling_descendants branch
57
69
  @tree[branch][2..-1]
@@ -68,5 +80,9 @@ class Tria
68
80
  def change_descendant branch, number, descendant
69
81
  @tree[branch - 1][number + 1] = descendant
70
82
  end
83
+ # Returns a string representation
84
+ def to_s
85
+ return "Tria-(MemAddress:#{self.object_id})"
86
+ end
71
87
 
72
88
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tria
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: