pretty_tree 0.1.0 → 0.1.1
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/CHANGELOG.md +11 -1
- data/lib/pretty_tree/layout.rb +15 -13
- data/lib/pretty_tree/preview.rb +4 -0
- data/lib/pretty_tree/version.rb +1 -1
- 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: 7a0038d904ee934c5ed5041915c450434aa1258f942f215acc90917abea691f6
|
|
4
|
+
data.tar.gz: a1708210b4889d573379f9be27824b67efa37459e2ac82c4ea25a2d2caa28374
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f900030677c0c2ccc8e73fa1423149f61b8a0e781aa0c7e5ff7135fbbf7774d7375c4a9f82ab80cfbdd100dc6fa7fd70d05419e862b8082fe3fea2c552de4c7f
|
|
7
|
+
data.tar.gz: 5b43d91bc0f4375c4ec60600d0e99df8ca6f094bbb6de366f86867a9e46c25dc0a645d069e16a0be0740e6474a5ce49cd8bcd197f6e2519a8ccda1c80210eb15
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.1.1] - 2026-09-30
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Labels of even length are now centered on their connectors in binary layouts
|
|
15
|
+
when the children's anchors are an odd distance apart. They were one column
|
|
16
|
+
too far to the left.
|
|
17
|
+
|
|
10
18
|
## [0.1.0] - 2026-09-30
|
|
11
19
|
|
|
12
20
|
### Added
|
|
@@ -21,5 +29,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
21
29
|
- `PrettyTree.preview` prints example trees.
|
|
22
30
|
- `PrettyTree::Error` is raised for invalid nested-array trees.
|
|
23
31
|
|
|
24
|
-
[Unreleased]: https://github.com/riccardo-giomi/pretty_tree/compare/v0.1.
|
|
32
|
+
[Unreleased]: https://github.com/riccardo-giomi/pretty_tree/compare/v0.1.1...HEAD
|
|
33
|
+
[0.1.1]: https://github.com/riccardo-giomi/pretty_tree/compare/v0.1.0...v0.1.1
|
|
25
34
|
[0.1.0]: https://github.com/riccardo-giomi/pretty_tree/releases/tag/v0.1.0
|
|
35
|
+
|
data/lib/pretty_tree/layout.rb
CHANGED
|
@@ -18,7 +18,7 @@ module PrettyTree
|
|
|
18
18
|
layout = layout_for(child_boxes)
|
|
19
19
|
lines, width, offsets = layout.merge
|
|
20
20
|
|
|
21
|
-
anchor = layout.label_anchor(offsets)
|
|
21
|
+
anchor = layout.label_anchor(offsets, label.length)
|
|
22
22
|
lines, width, offsets, anchor = layout.accommodate_parent_label(lines, width, offsets, anchor, label.length)
|
|
23
23
|
|
|
24
24
|
label_line = layout.render_label_line(label, width, anchor)
|
|
@@ -146,7 +146,7 @@ module PrettyTree
|
|
|
146
146
|
end
|
|
147
147
|
|
|
148
148
|
class Unary < Base
|
|
149
|
-
def label_anchor(offsets)
|
|
149
|
+
def label_anchor(offsets, label_length = 0)
|
|
150
150
|
offsets.first
|
|
151
151
|
end
|
|
152
152
|
|
|
@@ -173,11 +173,12 @@ module PrettyTree
|
|
|
173
173
|
|
|
174
174
|
def self.empty_box = Box.empty("")
|
|
175
175
|
|
|
176
|
-
def label_anchor(offsets)
|
|
176
|
+
def label_anchor(offsets, label_length = 0)
|
|
177
177
|
return offsets.last - CONNECTOR_SPAN if @boxes.first.empty?
|
|
178
178
|
return offsets.first + CONNECTOR_SPAN if @boxes.last.empty?
|
|
179
179
|
|
|
180
|
-
offsets.first +
|
|
180
|
+
sum = offsets.first + offsets.last
|
|
181
|
+
(sum.odd? && label_length.even?) ? (sum + 1) / 2 : sum / 2
|
|
181
182
|
end
|
|
182
183
|
|
|
183
184
|
def merge
|
|
@@ -202,7 +203,7 @@ module PrettyTree
|
|
|
202
203
|
end
|
|
203
204
|
|
|
204
205
|
class Ternary < Base
|
|
205
|
-
def label_anchor(offsets)
|
|
206
|
+
def label_anchor(offsets, label_length = 0)
|
|
206
207
|
offsets[1]
|
|
207
208
|
end
|
|
208
209
|
|
|
@@ -222,15 +223,16 @@ module PrettyTree
|
|
|
222
223
|
super(boxes.reject(&:empty?))
|
|
223
224
|
end
|
|
224
225
|
|
|
225
|
-
def label_anchor(offsets)
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
226
|
+
def label_anchor(offsets, label_length = 0)
|
|
227
|
+
index = offsets.size / 2
|
|
228
|
+
if offsets.size.odd?
|
|
229
|
+
offsets[index]
|
|
230
|
+
else
|
|
231
|
+
middle_left = offsets[index - 1]
|
|
232
|
+
middle_right = offsets[index]
|
|
232
233
|
|
|
233
|
-
|
|
234
|
+
middle_left + (middle_right - middle_left) / 2
|
|
235
|
+
end
|
|
234
236
|
end
|
|
235
237
|
|
|
236
238
|
def render_connector_lines(parent_label, parent_anchor, offsets, width)
|
data/lib/pretty_tree/preview.rb
CHANGED
|
@@ -47,6 +47,10 @@ module PrettyTree
|
|
|
47
47
|
render(["root", [1, ["a", ["A"]], ["b", ["B"]], ["c", ["C"]]], [2, ["a", ["A"]], ["b", ["B"]], ["c", ["C"]]], [3, ["a", ["A"]], ["b", ["B"]], ["c", ["C"]]], [4, ["a", ["A"]], ["b", ["B"]], ["c", ["C"]]]])
|
|
48
48
|
render(["root", [1, nil, nil, nil, nil, nil], [2, nil, nil, nil, nil, nil], [3, nil, nil, nil, nil, nil], [4, nil, nil, nil, nil, nil], [5, nil, nil, nil, nil, nil]])
|
|
49
49
|
render(["root", [1, ["a", ["A"]], ["b", ["B"]], ["c", ["C"]]], [2, ["a", ["A"]], ["b", ["B"]], ["c", ["C"]]], [3, ["a", ["A"]], ["b", ["B"]], ["c", ["C"]]], [4, ["a", ["A"]], ["b", ["B"]], ["c", ["C"]]], [5, ["a", ["A"]], ["b", ["B"]], ["c", ["C"]]]])
|
|
50
|
+
render([[7, 2], [[5, 4], [[2, 3], nil, nil], [[4, 7], nil, nil]], [[9, 6], [[8, 1], nil, nil], nil]])
|
|
51
|
+
render([[7, 2], [[5, 4], [[2, 3], nil, nil], [[4, 7], nil, nil]], [[10, 6], [[12, 21], nil, nil], [[1, 35], nil, nil]]])
|
|
52
|
+
render(["root", ["aaaa", nil, nil], ["bbbb", nil, nil], ["cccc", nil, nil], ["dddd", nil, nil]])
|
|
53
|
+
render([1000, *(1..4).map { |n| [1000 + n * 100, *(1..4).map { |m| [1000 + n * 100 + m] }] }])
|
|
50
54
|
end
|
|
51
55
|
end
|
|
52
56
|
end
|
data/lib/pretty_tree/version.rb
CHANGED