ruby_to_uml 3.0.0 → 3.0.1
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7fd9a79f3cfd30246e5775ba4c311914ba4de1b4398f6dd2610153dd85d9b961
|
4
|
+
data.tar.gz: 468eea42c858bfeb483aac63c1c82ed44524974fa0f8c4fec3d6c4a1084a577e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a461fb1839346bf0bf8420af01b006b85cb1252b519227f1d8a5f7239cf3e03fa700728923e1c5bac99bc0b4abbb6a6ab4b2a0a2b188df8880844d4d8b877108
|
7
|
+
data.tar.gz: 32f6ee7888dc6650e0c8ff0e6705a838791b3e3e518d1992315fe76760c8fd0e5ae95327d9d80dc12aafa6bb7c4747be822a2e94eb04f65e02a9bb8d27af422d
|
@@ -7,8 +7,8 @@
|
|
7
7
|
<title>Diagram</title>
|
8
8
|
</head>
|
9
9
|
<body>
|
10
|
-
<script src="
|
11
|
-
<script src="
|
10
|
+
<script src="https://unpkg.com/graphre/dist/graphre.js"></script>
|
11
|
+
<script src="https://unpkg.com/nomnoml/dist/nomnoml.js"></script>
|
12
12
|
|
13
13
|
<canvas id="target-canvas"></canvas>
|
14
14
|
<script>
|
@@ -2,55 +2,39 @@ module RubyToUML
|
|
2
2
|
module UMLInfoGenerator
|
3
3
|
module ProcessorHelpers
|
4
4
|
private
|
5
|
-
|
6
|
-
def get_class_name(node)
|
7
|
-
constant, inherit, children = *node
|
8
|
-
get_constant_name(constant)
|
9
|
-
end
|
10
|
-
|
11
|
-
def get_class_body(node)
|
12
|
-
body_node_index = 2
|
13
|
-
node.children[body_node_index]
|
14
|
-
end
|
15
|
-
|
16
|
-
def get_superclass_name(node)
|
17
|
-
constant, inherit, children = *node
|
18
|
-
inherit ? get_constant_name(inherit) : nil
|
19
|
-
end
|
20
|
-
|
21
|
-
def get_instance_methods_closure
|
5
|
+
def instance_methods_closure
|
22
6
|
type = :public
|
23
7
|
lambda do |node, instance_methods_info|
|
24
8
|
case node.type
|
25
9
|
when :def
|
26
|
-
method_name =
|
27
|
-
args =
|
10
|
+
method_name = NodeFinder.method_name(node)
|
11
|
+
args = NodeFinder.instance_method_args(node)
|
28
12
|
instance_methods_info << InstanceMethodInfo.new(method_name, type, args)
|
29
13
|
when :send
|
30
|
-
method_name =
|
31
|
-
new_type =
|
14
|
+
method_name = NodeFinder.send_method(node)
|
15
|
+
new_type = NodeFinder.method_type_change(method_name)
|
32
16
|
type = new_type if new_type
|
33
17
|
end
|
34
18
|
end
|
35
19
|
end
|
36
20
|
|
37
|
-
def
|
21
|
+
def singleton_methods_closure
|
38
22
|
lambda do |node, singleton_methods_info|
|
39
23
|
if node.type == :defs
|
40
|
-
method_name =
|
41
|
-
args =
|
24
|
+
method_name = NodeFinder.singleton_method_name(node)
|
25
|
+
args = NodeFinder.singleton_method_args(node)
|
42
26
|
singleton_methods_info << SingletonMethodInfo.new(method_name, args)
|
43
27
|
end
|
44
28
|
end
|
45
29
|
end
|
46
30
|
|
47
|
-
def
|
31
|
+
def instance_variables_closure
|
48
32
|
lambda do |node, instance_variables_info|
|
49
|
-
if node.type == :def &&
|
50
|
-
method_body_node = BodyNodeWrapper.new(
|
33
|
+
if node.type == :def && NodeFinder.method_name(node) == :initialize
|
34
|
+
method_body_node = BodyNodeWrapper.new(NodeFinder.method_body_node(node))
|
51
35
|
closure = lambda do |node|
|
52
36
|
if node.type == :ivar || node.type == :ivasgn
|
53
|
-
variable_name =
|
37
|
+
variable_name = NodeFinder.instance_variable_name(node)
|
54
38
|
instance_variables_info << variable_name
|
55
39
|
end
|
56
40
|
end
|
@@ -76,79 +60,98 @@ module RubyToUML
|
|
76
60
|
end
|
77
61
|
|
78
62
|
def add_module_relationship(class_name, arguments, type)
|
79
|
-
module_name =
|
63
|
+
module_name = NodeFinder.constant_name(arguments)
|
80
64
|
relationships << RelationshipInfo.new(class_name, module_name, type)
|
81
65
|
end
|
66
|
+
end
|
82
67
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
68
|
+
class NodeFinder
|
69
|
+
class << self
|
70
|
+
def class_name(node)
|
71
|
+
constant, inherit, children = *node
|
72
|
+
NodeFinder.constant_name(constant)
|
73
|
+
end
|
87
74
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
75
|
+
def class_body(node)
|
76
|
+
body_node_index = 2
|
77
|
+
node.children[body_node_index]
|
78
|
+
end
|
92
79
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
80
|
+
def superclass_name(node)
|
81
|
+
constant, inherit, children = *node
|
82
|
+
inherit ? NodeFinder.constant_name(inherit) : nil
|
83
|
+
end
|
97
84
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
85
|
+
def constant_name(const_node)
|
86
|
+
constant_name_index = 1
|
87
|
+
const_node.children[constant_name_index]
|
88
|
+
end
|
102
89
|
|
103
|
-
|
104
|
-
|
105
|
-
|
90
|
+
def method_name(def_node)
|
91
|
+
name_index = 0
|
92
|
+
def_node.children[name_index]
|
93
|
+
end
|
106
94
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
95
|
+
def instance_method_args(def_node)
|
96
|
+
args_index = 1
|
97
|
+
NodeFinder.arguments(def_node.children[args_index])
|
98
|
+
end
|
111
99
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
100
|
+
def send_method(send_node)
|
101
|
+
caller, method, arguments = *send_node
|
102
|
+
method
|
103
|
+
end
|
116
104
|
|
117
|
-
|
118
|
-
|
105
|
+
def method_type_change(method_name)
|
106
|
+
%i[public private protected].include?(method_name) ? method_name : nil
|
107
|
+
end
|
119
108
|
|
120
|
-
|
121
|
-
|
109
|
+
def singleton_method_name(defs_node)
|
110
|
+
name_index = 1
|
111
|
+
defs_node.children[name_index]
|
112
|
+
end
|
122
113
|
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
114
|
+
def singleton_method_args(defs_node)
|
115
|
+
args_index = 2
|
116
|
+
NodeFinder.arguments(defs_node.children[args_index])
|
117
|
+
end
|
127
118
|
|
128
|
-
|
129
|
-
|
130
|
-
node.children[name_index]
|
131
|
-
end
|
119
|
+
def arguments(node)
|
120
|
+
return [] if node.children.nil?
|
132
121
|
|
133
|
-
|
134
|
-
|
135
|
-
get_constant_name(constant)
|
136
|
-
end
|
122
|
+
node.children.each_with_object([]) { |node, args| args << node.children[0] }
|
123
|
+
end
|
137
124
|
|
138
|
-
|
139
|
-
|
140
|
-
|
125
|
+
def method_body_node(def_node)
|
126
|
+
body_index = 2
|
127
|
+
def_node.children[body_index]
|
128
|
+
end
|
129
|
+
|
130
|
+
def instance_variable_name(node)
|
131
|
+
name_index = 0
|
132
|
+
node.children[name_index]
|
133
|
+
end
|
134
|
+
|
135
|
+
def module_name(node)
|
136
|
+
constant, = *node
|
137
|
+
NodeFinder.constant_name(constant)
|
138
|
+
end
|
139
|
+
|
140
|
+
def module_body(node)
|
141
|
+
_, body = *node
|
142
|
+
body
|
143
|
+
end
|
141
144
|
end
|
142
145
|
end
|
143
146
|
|
144
147
|
module ClassAndRelationshipsProcessor
|
145
148
|
def on_class(node)
|
146
|
-
class_name =
|
147
|
-
superclass_name =
|
148
|
-
class_body_node = BodyNodeWrapper.new(
|
149
|
-
instance_methods_info = class_body_node.array_operation(&
|
150
|
-
singleton_methods_info = class_body_node.array_operation(&
|
151
|
-
instance_variables_info = class_body_node.array_operation(&
|
149
|
+
class_name = NodeFinder.class_name(node)
|
150
|
+
superclass_name = NodeFinder.superclass_name(node)
|
151
|
+
class_body_node = BodyNodeWrapper.new(NodeFinder.class_body(node))
|
152
|
+
instance_methods_info = class_body_node.array_operation(&instance_methods_closure)
|
153
|
+
singleton_methods_info = class_body_node.array_operation(&singleton_methods_closure)
|
154
|
+
instance_variables_info = class_body_node.array_operation(&instance_variables_closure)
|
152
155
|
|
153
156
|
add_inheritence_relationship(class_name, superclass_name) if superclass_name
|
154
157
|
class_body_node.simple_operation(&add_module_relationships_if_exist_closure(class_name))
|
@@ -167,10 +170,10 @@ module RubyToUML
|
|
167
170
|
|
168
171
|
module ModuleProcesor
|
169
172
|
def on_module(node)
|
170
|
-
module_name =
|
171
|
-
module_body_node = BodyNodeWrapper.new(
|
172
|
-
instance_methods_info = module_body_node.array_operation(&
|
173
|
-
singleton_methods_info = module_body_node.array_operation(&
|
173
|
+
module_name = NodeFinder.module_name(node)
|
174
|
+
module_body_node = BodyNodeWrapper.new(NodeFinder.module_body(node))
|
175
|
+
instance_methods_info = module_body_node.array_operation(&instance_methods_closure)
|
176
|
+
singleton_methods_info = module_body_node.array_operation(&singleton_methods_closure)
|
174
177
|
|
175
178
|
add_module(module_name, instance_methods_info, singleton_methods_info)
|
176
179
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_to_uml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Iuliu Pop
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: erb
|