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 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 = ["royw"]
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.2
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
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{railroad_xing}
5
- s.version = "0.5.2"
5
+ s.version = "0.5.3"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["royw"]
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: royw-railroad_xing
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - royw