line-tree 0.9.3 → 0.9.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a4941d5015036d351165b5d40866904d2808511e2aff6ae5fbfbc4d05f960ac9
4
- data.tar.gz: 8169bc61faade352e4e7541e8edc4acf8e06a0f7cebc9fc833390a9106596faf
3
+ metadata.gz: 9c851dd296720238d1bab5e87773fea3e7443c094113a496cf2f9029063cfb49
4
+ data.tar.gz: 7f63878999b0b4b6c6bfd7c5cead345caf850d1dcfb5e4130a3e865fbecc1cac
5
5
  SHA512:
6
- metadata.gz: 759dce7b2018ea6e914d94b3d3478b2d02e80cb62405d6624e6a3fa5cc81fa28feb2132d9f7e7c59bf85ec0efa66461f88a69980577ef4c02dcf807ff5b67517
7
- data.tar.gz: 0d405fb0a21d367f6bd01fde12543f8ed163e54565c03845ba5751647eaeb536d989caa80d0f40e291ed47d9a6ac3cab42797bb506574a2fa3010852a1da868c
6
+ metadata.gz: 49b75a3091fc00f633ba78a1a0fdb4413e0ee48ceb3b24ac1ba61d6a4f34ceb1927be408fedf4ab48b6db8b8c37eddf8deada81b7a94152909b836e1a5e570a7
7
+ data.tar.gz: 228e3a7034b8cc7d33a1b09c76b21e4498f4f819760203eb5bbcfa9f95ce63d249c144c4d7f47eaf4708c383661528fbb14a147e796142efa75eb0d8449a94d6
checksums.yaml.gz.sig CHANGED
Binary file
data/lib/line-tree.rb CHANGED
@@ -20,8 +20,6 @@ end
20
20
 
21
21
  class LineTree
22
22
  using ColouredText
23
-
24
- attr_reader :to_a
25
23
 
26
24
  def initialize(raw_s, level: nil, ignore_non_element: true,
27
25
  ignore_blank_lines: true, ignore_label: false,
@@ -45,6 +43,10 @@ class LineTree
45
43
 
46
44
  end
47
45
 
46
+ def to_a(normalize: false)
47
+ normalize ? norm(@to_a) : @to_a
48
+ end
49
+
48
50
  def to_doc(encapsulate: false)
49
51
 
50
52
  a = @to_a
@@ -79,6 +81,39 @@ class LineTree
79
81
  Rexle.new(s).xml declaration: false
80
82
 
81
83
  end
84
+
85
+ # key–value pair returns Hash object describing a
86
+ # flat representation of a tree
87
+ #
88
+ def to_kv_pair
89
+
90
+ def scan2keypair(h, trail=nil)
91
+
92
+ h.inject([]) do |r,x|
93
+
94
+ if x.last.is_a? String then
95
+
96
+ key, val = x
97
+
98
+ new_key = if r.last and r.last.first.length > 0 then
99
+ key.to_s
100
+ else
101
+ key.to_s
102
+ end
103
+ r << [[trail, new_key].compact.join('/'), val]
104
+ else
105
+ new_key = x.first.to_s
106
+ r << [new_key, x.last.first]
107
+ r.concat scan2keypair(x.last.last, [trail, new_key].compact.join('/'))
108
+ end
109
+
110
+ end
111
+
112
+ end
113
+
114
+ scan2keypair(self.to_h).to_h
115
+
116
+ end
82
117
 
83
118
  def to_tree()
84
119
 
@@ -194,6 +229,30 @@ class LineTree
194
229
 
195
230
  end
196
231
 
232
+ # Improves readability by removing unnecessary brackets from an Array row.
233
+ # Thus making it a String when there are no children.
234
+ #
235
+ def norm(a)
236
+
237
+ a.map do |x|
238
+
239
+ if x.is_a? Array then
240
+
241
+ if x.length < 2 then
242
+ x.first
243
+ else
244
+ row = norm(x[1..-1])
245
+ [x.first, row]
246
+ end
247
+
248
+ else
249
+ x
250
+ end
251
+
252
+ end
253
+ end
254
+
255
+
197
256
 
198
257
  def scan_shift(lines, level=nil)
199
258
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: line-tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.9.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -10,32 +10,33 @@ bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjEwNTI0MTI0ODIxWhcN
15
- MjIwNTI0MTI0ODIxWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDfk8fB
17
- D2jHfBedGGk+X55VovRCkVCg862U22dOcgu6MJzInLBr1DLTRj5gKT+/KVwECFuQ
18
- Z+8+bosNA5n63I4s3Ofaas+4Svtk9/qYRvKbEjNhHYRdwXk8s7k+3mcrubkYACiP
19
- bF8C9gYsgmZdOHd6tJiGBPTrsvny9YIBB8ZfEaRaS+p6qyan6Mp26i94GMJlrRNU
20
- KYxpO4wDm8O+YfwBEjRtgGJsAJrUGrNu/xK9TllHgByaP69m/32i8rVIlcwesM5b
21
- zb6D4Sp9qGfpye6JI4nH8uGT8xY8R0PDF7NjHJKvjcgeRIjNGhRakafrlYnPBtQD
22
- EmcaX1MBF6U31RDtHJIAmm6x5WQzkRQ52x9XctCyLxSQcVX3diJPkhsldT56QNW8
23
- NU/jzgHtG2YjsNIXRgcjggjUQLHyqF1klpjsMa27LA/yqM06xkoR1lOqgSb+Bmo9
24
- SnWA5QbJD467HSu4KzBPAcxPC47y2UiJ/dHp845jtuSu8QXlVIA6+v98Em0CAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUmWnxgrmO
26
- 9jxkvnq/EF/zdK/f8cUwJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
- c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEATwYeriJAZ1zzY4clufScRlWbAB0v1n5jqnCUoE45
29
- 5he18IG1hbnUQbUiIMxGN336YsLceDdr9sWlOYeD/j0mhu/fWsaOXOrMQOrdLclk
30
- 62EcS9R419xSjf0PRz4h6hWbNnHcIHXsmZYB72YLe7RkfSf7zNc2Y6/Bl8LToyjd
31
- OHZsUhAyWXauitBNWspm+aj75uUeX0YWEcFySnBw2/MavkkrQmy3sslZBjBP3pf5
32
- 3wcSl64k20wvtigCsFB6TYIMAI2+HBMkobSNSJajZP1TPt48HmcYDMsYfdQzzF72
33
- wgaSGvXwxq3FIPeFXk2yfUq7IOTIxHBH3q6ULVtW8NKnc5DckqUtfKbgflitRTd+
34
- RtFCP/+DTXiYybQMXhdI3G/0MimLvIoEa7ytR5PvX86J+3abWenqiJ9+KXEqIroz
35
- PR3ZcZkDNVXMAWJRegTgs3bTj/TOBz/9wA/ltrJjqU6xHPnNoEe/W5oSQtUywvAh
36
- hWGDTAfEg/j8AdkfGnhBG1OK
13
+ MIIEljCCAv6gAwIBAgIBATANBgkqhkiG9w0BAQsFADBIMRIwEAYDVQQDDAlnZW1t
14
+ YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
15
+ 8ixkARkWAmV1MB4XDTIyMDkxOTE4NTAyNFoXDTIzMDkxOTE4NTAyNFowSDESMBAG
16
+ A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
17
+ EjAQBgoJkiaJk/IsZAEZFgJldTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoC
18
+ ggGBAKewL5koIeonrLatARqtEGMvvO1SBMJHDigd7uVk4MaORs0s0t/vNtrySvEb
19
+ rH85OaumldcEx+3UKPQbcCLjO5oAa/FVVNvQzGj8xJY1oPZKFkN2BRkb6G0+prVM
20
+ FgppISUMTLNQTWmHx+/pLZbDrMXHUM/Gpp5qj/s+Mnrm8VNDveaG1xL/DErOH+P5
21
+ ysogge391t3pzh7Gmvdvar2aWXOIjfhOMA6RiwE6cEgwC2OfVSEaQSYkME1L1m/M
22
+ b5yC/ytjk1vz4Zbq+N/SXlHI4hI6z0C/12psP55b1xQ0zYC/fJtrFsKD6GoMhQIx
23
+ Nt7qfXQYs2wk+9QmoTPRi8joAzHhs+vWyDQj9CrEa5YznyTZXxcCZOkYNgrO4vdl
24
+ 0G3TE3EHu/KhXPRRy5+WABmJ5QttTTcy7ReX0se5cWmFjmSiQig5RtLNj4zFbhOC
25
+ /pXWn5nOwCGjOvgo3ZfvkpPsIX7gv5utJY5C1Mlh73djop4IY/INdY3DLqaNK4iO
26
+ dYP5CwIDAQABo4GKMIGHMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
27
+ BBRRiUFKFCE4OmYH7DT5ZUlIIJbdlTAmBgNVHREEHzAdgRtnZW1tYXN0ZXJAamFt
28
+ ZXNyb2JlcnRzb24uZXUwJgYDVR0SBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
29
+ c29uLmV1MA0GCSqGSIb3DQEBCwUAA4IBgQBXtp4+qyVtlz8gfAHRxzmeEutX/L+h
30
+ nnH2sJzw4SoYccNT3jVWIy0mlQWpvhSgyLvU+JdVQz6qtHrsNt7LWb56IS3K7sCW
31
+ XMEi6aEQueMBw/2xRbJqi35GZBIpQqvXJudlKeRNqS9ifquT6PFV/gCASI1pFJgB
32
+ uxrNbZFwcZH3iUR0C4c+Js3SxETcLtb/Tmm8eIIp/TZJ4DYYRqVlxalL4gUwe6Kx
33
+ nnnWvZRuC/gLf39DwaGPlOsS5CkdzcDjY0xYzMbnyJ1PakT45P03bQE3vo3uvrp0
34
+ VAkB38cUXGgk86qi7RozTrJgr8bMkrjdlAgDiiHLMJ0K0oIkf5cadgarYvbmQ1nX
35
+ iXjhjSXYck8mrCCYrsDy9Cz/WCR/LmuOCn0QwL4VMDyfeaozAFME/rO5jNCPPOvg
36
+ C5EdQTQBDv+/PxpfNRw9c/rDC44+fVecf9eUtJtfP2oliL7q8SlpE2Bt9D1H/ePQ
37
+ diGSVRnIxA91BeBOGkt0dmzMPFRHD4+TvtM=
37
38
  -----END CERTIFICATE-----
38
- date: 2021-05-24 00:00:00.000000000 Z
39
+ date: 2022-09-19 00:00:00.000000000 Z
39
40
  dependencies:
40
41
  - !ruby/object:Gem::Dependency
41
42
  name: rexle
@@ -46,7 +47,7 @@ dependencies:
46
47
  version: '1.5'
47
48
  - - ">="
48
49
  - !ruby/object:Gem::Version
49
- version: 1.5.11
50
+ version: 1.5.14
50
51
  type: :runtime
51
52
  prerelease: false
52
53
  version_requirements: !ruby/object:Gem::Requirement
@@ -56,7 +57,7 @@ dependencies:
56
57
  version: '1.5'
57
58
  - - ">="
58
59
  - !ruby/object:Gem::Version
59
- version: 1.5.11
60
+ version: 1.5.14
60
61
  description: Line-tree parses indented lines of text and returns an array representing
61
62
  a tree structure.
62
63
  email: digital.robertson@gmail.com
@@ -84,7 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
84
85
  - !ruby/object:Gem::Version
85
86
  version: '0'
86
87
  requirements: []
87
- rubygems_version: 3.1.2
88
+ rubygems_version: 3.3.7
88
89
  signing_key:
89
90
  specification_version: 4
90
91
  summary: line-tree
metadata.gz.sig CHANGED
Binary file