dependency_builder 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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�