yuml 0.2.5 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/yuml.rb +4 -4
- data/lib/yuml/class.rb +12 -54
- data/lib/yuml/relationship.rb +16 -30
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 907906ac9ee46b88eba7d9f9b1a257d7447bd1e4
|
4
|
+
data.tar.gz: 43fa6090d14dd0e37d339e5618f206a1c59e3876
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5888e4a2b4bc5c8e2cd76eaeedcf47f99f61b8dbea44841dc2426b7dd6df0295f8db06b6e7d63f0d4374c0ece61b9685abd2b3c5e1e9dd0fd9e18f847a2b63ad
|
7
|
+
data.tar.gz: 3a16c0f33d778d1033988bef97ee4bfb64df70ec07ec667fbcd1c1220143be52b97b3747361fc1ee9bd2fa736b85d606fc6a175a6d3bc527ab773f774bff699b
|
data/lib/yuml.rb
CHANGED
@@ -3,16 +3,16 @@ require 'net/http'
|
|
3
3
|
require 'yuml/class'
|
4
4
|
require 'yuml/relationship'
|
5
5
|
|
6
|
+
# A module to create a DSL for yuml.me
|
6
7
|
module YUML
|
7
8
|
extend self
|
8
9
|
|
9
10
|
ESCAPE_CHARACTERS = {
|
10
11
|
'{' => "\u23A8",
|
11
|
-
'}' => "\u23AC"
|
12
|
+
'}' => "\u23AC",
|
13
|
+
',' => "\u201A"
|
12
14
|
}
|
13
15
|
|
14
|
-
ESCAPE_COMMA = "\u201A"
|
15
|
-
|
16
16
|
def generate(options)
|
17
17
|
options = { file: '/tmp/yuml.pdf' }.merge(options)
|
18
18
|
classes.clear
|
@@ -47,6 +47,6 @@ module YUML
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def encodings
|
50
|
-
"#{ESCAPE_CHARACTERS.values.join}
|
50
|
+
"#{ESCAPE_CHARACTERS.values.join}[](){}+->|.,=;*^ "
|
51
51
|
end
|
52
52
|
end
|
data/lib/yuml/class.rb
CHANGED
@@ -14,30 +14,27 @@ module YUML
|
|
14
14
|
@name
|
15
15
|
end
|
16
16
|
|
17
|
-
def
|
18
|
-
|
17
|
+
def variables(*args)
|
18
|
+
args.flatten!
|
19
|
+
return attributes(@variables) if args.empty?
|
20
|
+
@variables << normalize(args)
|
19
21
|
end
|
20
22
|
|
21
|
-
def
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
def public_variables(*args)
|
26
|
-
uml_variables('+', *args)
|
27
|
-
end
|
28
|
-
|
29
|
-
def private_variables(*args)
|
30
|
-
uml_variables('-', *args)
|
23
|
+
def methods(*args)
|
24
|
+
args.flatten!
|
25
|
+
return attributes(@methods) if args.empty?
|
26
|
+
@methods << normalize(args)
|
31
27
|
end
|
32
28
|
|
33
29
|
def has_a(dest, options = {})
|
34
|
-
|
30
|
+
options[:type] = :aggregation unless %i(composition aggregation).include?(options[:type])
|
31
|
+
relationship = YUML::Relationship.send(options[:type], options[:cardinality])
|
35
32
|
@relationships << "[#{name}]#{relationship}[#{dest.name}]"
|
36
33
|
end
|
37
34
|
|
38
35
|
def is_a(dest, options = {})
|
39
36
|
options[:type] = :inheritance unless %i(inheritance interface).include?(options[:type])
|
40
|
-
relationship = YUML::Relationship.
|
37
|
+
relationship = YUML::Relationship.send(options[:type])
|
41
38
|
@relationships << "[#{dest.name}]#{relationship}[#{name}]"
|
42
39
|
end
|
43
40
|
|
@@ -53,50 +50,11 @@ module YUML
|
|
53
50
|
|
54
51
|
def normalize(values)
|
55
52
|
values.map(&:to_s).map do |v|
|
56
|
-
YUML::ESCAPE_CHARACTERS.each
|
57
|
-
v.tr!(char, escape)
|
58
|
-
end
|
53
|
+
YUML::ESCAPE_CHARACTERS.each { |char, escape| v.tr!(char, escape) }
|
59
54
|
v
|
60
|
-
end.join("\u201A ")
|
61
|
-
end
|
62
|
-
|
63
|
-
def uml_variables(scope, *args)
|
64
|
-
args.each { |var| variable(scope: scope, attribute: var) }
|
65
|
-
end
|
66
|
-
|
67
|
-
def uml_methods(scope, *args)
|
68
|
-
args.each do |m|
|
69
|
-
if m.class == Hash
|
70
|
-
mets = m.map { |k, v| "#{k}(#{normalize(v)})" }
|
71
|
-
mets.each { |met| method(scope: scope, attribute: met) }
|
72
|
-
else
|
73
|
-
method(scope: scope, attribute: "#{m}()")
|
74
|
-
end
|
75
55
|
end
|
76
56
|
end
|
77
57
|
|
78
|
-
def method(options)
|
79
|
-
attribute(@methods, options)
|
80
|
-
end
|
81
|
-
|
82
|
-
def variable(options)
|
83
|
-
attribute(@variables, options)
|
84
|
-
end
|
85
|
-
|
86
|
-
def attribute(attributes, options)
|
87
|
-
scope = options[:scope] || '+'
|
88
|
-
scope = '+' unless %w(+ -).include?(scope)
|
89
|
-
attributes << "#{scope}#{options.fetch(:attribute)}"
|
90
|
-
end
|
91
|
-
|
92
|
-
def methods
|
93
|
-
attributes(@methods)
|
94
|
-
end
|
95
|
-
|
96
|
-
def variables
|
97
|
-
attributes(@variables)
|
98
|
-
end
|
99
|
-
|
100
58
|
def attributes(attrs)
|
101
59
|
"|#{attrs.join(';')}" unless attrs.empty?
|
102
60
|
end
|
data/lib/yuml/relationship.rb
CHANGED
@@ -1,43 +1,29 @@
|
|
1
|
-
# Represents a yUML relationship
|
2
1
|
module YUML
|
2
|
+
# Represents UML class relationships
|
3
3
|
module Relationship
|
4
|
-
|
4
|
+
module_function
|
5
5
|
|
6
|
-
def
|
7
|
-
|
8
|
-
types = %i(aggregation composition inheritance interface)
|
9
|
-
type = options[:type]
|
10
|
-
type = :aggregation unless types.include?(type)
|
11
|
-
cardinality = options[:cardinality]
|
12
|
-
representation(type, cardinality)
|
6
|
+
def inheritance
|
7
|
+
'^-'
|
13
8
|
end
|
14
9
|
|
15
|
-
|
10
|
+
def interface
|
11
|
+
'^-.-'
|
12
|
+
end
|
16
13
|
|
17
|
-
def
|
18
|
-
|
19
|
-
return composition(type, cardinality)
|
20
|
-
elsif %i(inheritance interface).include?(type)
|
21
|
-
return inheritance(type)
|
22
|
-
end
|
14
|
+
def composition(*args)
|
15
|
+
"+#{aggregation(*args)}"
|
23
16
|
end
|
24
17
|
|
25
|
-
def
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
base << "#{cardinality[0]}-#{cardinality[1]}>"
|
18
|
+
def aggregation(*args)
|
19
|
+
args.flatten!
|
20
|
+
if args.size == 2
|
21
|
+
"+#{args[0]}-#{args[1]}>"
|
22
|
+
elsif args.size == 1
|
23
|
+
"+-#{args.first}>"
|
32
24
|
else
|
33
|
-
|
25
|
+
'+->'
|
34
26
|
end
|
35
|
-
base
|
36
|
-
end
|
37
|
-
|
38
|
-
def inheritance(type)
|
39
|
-
return '^-.-' if type == :interface
|
40
|
-
'^-'
|
41
27
|
end
|
42
28
|
end
|
43
29
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yuml
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Derek Stride
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|