dependency_builder 0.1.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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b26413f569f1922cff805dbc4f6223084e8b2dde
4
+ data.tar.gz: 0c81cda305e389a7c34642a26f74bb2f3c0e6b45
5
+ SHA512:
6
+ metadata.gz: bb27b113eea9d2fcd04c71e15368c121c5eca2b21bef0ff0e6768f886345f4764f721acc00cf5eb1bea5a1535e995ae8f585d0df82bee0ea6fe06254a29573df
7
+ data.tar.gz: 9b51090b56cf0e9e68e155b4dfe9186069f782c357b83a2334793dab402e440cf5b1399bfc043f68dbf70556b1752034cb0a6be0ea500fe97da053a7bdb949a1
checksums.yaml.gz.sig ADDED
Binary file
data.tar.gz.sig ADDED
Binary file
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # file: dependency_builder.rb
4
+
5
+ # description: Builds a dependency tree (inside out) from clusters of
6
+ # dependencies (outside in) in a string format with
7
+ # indented (2 spaces) branches.
8
+
9
+
10
+ require 'line-tree'
11
+
12
+
13
+ class DependencyBuilder
14
+
15
+ attr_reader :to_s
16
+
17
+ def initialize(s)
18
+
19
+ a = LineTree.new(s).to_a
20
+ items = a.flatten.uniq
21
+
22
+ h = Hash[items.zip([[]] * items.length)]
23
+
24
+ a.each do |x|
25
+
26
+ head, *tail = x
27
+
28
+ # check each child
29
+ tail.flatten.each {|x2| h[x2] += [head] }
30
+
31
+ end
32
+
33
+ # reject items without dependencies
34
+ h2 = h.reject {|k,v| v.empty?}
35
+
36
+ h2.keys.each do |item|
37
+
38
+ key, _ = h2.find {|x| x[-1].grep(item).any? }
39
+
40
+ next unless h2[key]
41
+ index = h2[key].index item
42
+ next unless index
43
+ h2[key][index] = {item => h2[item]}
44
+ h2.delete item
45
+
46
+ end
47
+
48
+ @to_s = treeize(h2)
49
+
50
+ end
51
+
52
+ private
53
+
54
+ def treeize(obj, indent=0)
55
+
56
+ case obj
57
+ when Hash
58
+
59
+ i = indent + 1
60
+ obj.map {|k,v| ' ' * indent + k + "\n" + treeize(v, i.clone)}.join("\n")
61
+
62
+ when Array
63
+
64
+ obj.map {|x| treeize(x, indent)}.join("\n")
65
+
66
+ else
67
+
68
+ ' ' * indent + obj
69
+
70
+ end
71
+ end
72
+
73
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dependency_builder
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - James Robertson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDXjCCAkagAwIBAgIBATANBgkqhkiG9w0BAQUFADAsMSowKAYDVQQDDCFnZW1t
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTgwMTIxMTc1NDIzWhcN
15
+ MTkwMTIxMTc1NDIzWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDHtny/
17
+ uKHFxHLGZvFGGwPQBxc/HV5p9WHcpC/EHXwEl2p533vVNIbo6Aiz1nLaFLFiVaZP
18
+ GTt1Cz6T21k5Pe4HIqwVv0DQaxhtNYQq23zReRDCr47usK1RDqQZd7dDoJIKm005
19
+ dcooT2LqcqMdtJw7AdUTbJqt7TgQO6Fl6SQsWkPmOK+dbJs54ykYiYxBTEAoATKK
20
+ O9KgSt+YqcyvjFW/HBNCqrzp5Ub4Tcf8ELzqZCl8Bq6g7m4jXfwE/DFRMUrrQEQf
21
+ wGUDq0KggSP3KdM2w7WG8K9cOOEqe+CKPjZq7hYS5cKf35M0tkHN5vX+FhZJKdoc
22
+ j1qyOOn3sxE0N/CtAgMBAAGjgYowgYcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
23
+ HQYDVR0OBBYEFOVJCEARZnAGO1hvjN6YP8Iui9yVMCYGA1UdEQQfMB2BG2dlbW1h
24
+ c3RlckBqYW1lc3JvYmVydHNvbi5ldTAmBgNVHRIEHzAdgRtnZW1tYXN0ZXJAamFt
25
+ ZXNyb2JlcnRzb24uZXUwDQYJKoZIhvcNAQEFBQADggEBAI0pt+oJx2pmEXVbsPPs
26
+ NwjerC3xZfPw8JajfbctdcY6BvXkCpkolKhqT5GsNgiZhImiv62JS4yeZvzRz3tQ
27
+ pionyXvtz8hTkUI+IUeS6MeiVnC2EJOFuj4zdm8w6dm3VYEREJ79qXBqkapHon7y
28
+ SN7O035KXhmTbo+dZQh1NnQJSm0K3sxUFPXvm+RfT+JYKcgYRD5KZueqNlvddcts
29
+ NtAY4TSz3wdaiMAwZi3TcT38A63CIQX6OVl91OrTHejXCzV/AFzW9AgY/i2UbW5s
30
+ ltZQCIc1taob+yneIun18gNE5A1UCEr/g7NcmAlIEsR8I+kjPIl0HUcsEQPvMX/T
31
+ pm0=
32
+ -----END CERTIFICATE-----
33
+ date: 2018-01-21 00:00:00.000000000 Z
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: line-tree
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '0.6'
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: 0.6.1
45
+ type: :runtime
46
+ prerelease: false
47
+ version_requirements: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - "~>"
50
+ - !ruby/object:Gem::Version
51
+ version: '0.6'
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.6.1
55
+ description:
56
+ email: james@jamesrobertson.eu
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - lib/dependency_builder.rb
62
+ homepage: https://github.com/jrobertson/dependency_builder
63
+ licenses:
64
+ - MIT
65
+ metadata: {}
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ requirements: []
81
+ rubyforge_project:
82
+ rubygems_version: 2.6.13
83
+ signing_key:
84
+ specification_version: 4
85
+ summary: Builds a dependency tree (inside out) from clusters of dependencies (outside
86
+ in) in a string format with indented (2 spaces) branches.
87
+ test_files: []
metadata.gz.sig ADDED
@@ -0,0 +1 @@
1
+ ��C�x{9�2��t�S���1�#w�B�GF��)-
2
+ Q��!Ԅ[G�sňğo��T�B/�Լ�R@�3`�p=)ӱ�G`��u$� �X�