royw-railroad_xing 0.5.2 → 0.5.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/railroad/aasm_diagram.rb +28 -0
- data/railroad_xing.gemspec +1 -1
- metadata +1 -1
data/Rakefile
CHANGED
@@ -8,7 +8,7 @@ begin
|
|
8
8
|
gem.summary = %Q{A DOT diagram generator for Ruby web applications (Rails, Merb)}
|
9
9
|
gem.email = "roy@wright.org"
|
10
10
|
gem.homepage = "http://github.com/royw/railroad_xing"
|
11
|
-
gem.authors = ["
|
11
|
+
gem.authors = ["Roy Wright"]
|
12
12
|
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
13
13
|
end
|
14
14
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.3
|
@@ -25,6 +25,9 @@ class AasmDiagram < AppDiagram
|
|
25
25
|
# Process model files
|
26
26
|
def generate
|
27
27
|
STDERR.print "Generating AASM diagram\n" if @options.verbose
|
28
|
+
|
29
|
+
generate_new_aasm
|
30
|
+
|
28
31
|
files = Dir.glob("app/models/**/*.rb")
|
29
32
|
files += Dir.glob("vendor/plugins/**/app/models/*.rb") if @options.plugins_models
|
30
33
|
files -= @options.exclude
|
@@ -84,5 +87,30 @@ class AasmDiagram < AppDiagram
|
|
84
87
|
end
|
85
88
|
end
|
86
89
|
end # process_class
|
90
|
+
|
91
|
+
def generate_new_aasm
|
92
|
+
if defined?(AASM) && defined?(AASM::StateMachine) && (machines = AASM::StateMachine.instance_variable_get(:'@machines'))
|
93
|
+
machines.map {|k, v| [k.first.name, v.states, v.events, v.initial_state]}.each do |name, states, events, initial_state|
|
94
|
+
states.each do |state|
|
95
|
+
node_shape = (initial_state == state.name) ? ", peripheries = 2" : ""
|
96
|
+
node_attribs = ["#{name.underscore}_#{state.name} [label=#{state.name} #{node_shape}];"]
|
97
|
+
@graph.add_node ['aasm', name, node_attribs]
|
98
|
+
end
|
99
|
+
|
100
|
+
events.each do |event_name, event|
|
101
|
+
event.instance_variable_get(:'@transitions').each do |transition|
|
102
|
+
[*transition.from].each do |from|
|
103
|
+
@graph.add_edge [
|
104
|
+
'event',
|
105
|
+
name.underscore + "_" + transition.from.to_s,
|
106
|
+
name.underscore + "_" + transition.to.to_s,
|
107
|
+
event.name.to_s
|
108
|
+
]
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
87
115
|
|
88
116
|
end # class AasmDiagram
|
data/railroad_xing.gemspec
CHANGED