From 49e55644132d1d833634ba49960e9a06001c3f8f Mon Sep 17 00:00:00 2001 From: Nelson Silva Date: Fri, 22 May 2009 17:35:44 +0100 Subject: [PATCH] moved things around to create Rake tasks --- .gitignore | 2 + init.rb | 1 + {railroad => lib/railroad}/aasm_diagram.rb | 0 {railroad => lib/railroad}/app_diagram.rb | 2 + .../railroad}/controllers_diagram.rb | 0 {railroad => lib/railroad}/diagram_graph.rb | 2 +- {railroad => lib/railroad}/models_diagram.rb | 0 {railroad => lib/railroad}/options_struct.rb | 0 {railroad => lib/railroad}/uml_dumper.rb | 0 lib/shoes_app.rb | 5 ++ lib/yUMLmeRails.rb | 49 +++++++++++++++++++ tasks/yUMLmeRails.rake | 24 +++++++++ 12 files changed, 84 insertions(+), 1 deletion(-) create mode 100644 .gitignore create mode 100644 init.rb rename {railroad => lib/railroad}/aasm_diagram.rb (100%) rename {railroad => lib/railroad}/app_diagram.rb (99%) rename {railroad => lib/railroad}/controllers_diagram.rb (100%) rename {railroad => lib/railroad}/diagram_graph.rb (98%) rename {railroad => lib/railroad}/models_diagram.rb (100%) rename {railroad => lib/railroad}/options_struct.rb (100%) rename {railroad => lib/railroad}/uml_dumper.rb (100%) create mode 100644 lib/shoes_app.rb create mode 100644 lib/yUMLmeRails.rb create mode 100644 tasks/yUMLmeRails.rake diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..97909fa --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*~ +shoes2.run diff --git a/init.rb b/init.rb new file mode 100644 index 0000000..29534c6 --- /dev/null +++ b/init.rb @@ -0,0 +1 @@ +require File.join(File.dirname(__FILE__), "lib", "yUMLmeRails") diff --git a/railroad/aasm_diagram.rb b/lib/railroad/aasm_diagram.rb similarity index 100% rename from railroad/aasm_diagram.rb rename to lib/railroad/aasm_diagram.rb diff --git a/railroad/app_diagram.rb b/lib/railroad/app_diagram.rb similarity index 99% rename from railroad/app_diagram.rb rename to lib/railroad/app_diagram.rb index 2fb94fd..04fcb7c 100644 --- a/railroad/app_diagram.rb +++ b/lib/railroad/app_diagram.rb @@ -9,6 +9,8 @@ # Root class for RailRoad diagrams class AppDiagram + attr :graph + def initialize(options) @options = options @graph = DiagramGraph.new diff --git a/railroad/controllers_diagram.rb b/lib/railroad/controllers_diagram.rb similarity index 100% rename from railroad/controllers_diagram.rb rename to lib/railroad/controllers_diagram.rb diff --git a/railroad/diagram_graph.rb b/lib/railroad/diagram_graph.rb similarity index 98% rename from railroad/diagram_graph.rb rename to lib/railroad/diagram_graph.rb index b53150b..1396573 100644 --- a/railroad/diagram_graph.rb +++ b/lib/railroad/diagram_graph.rb @@ -79,7 +79,7 @@ def to_yuml end "[#{from}]#{association}[#{to}]" } - "http://yuml.me/diagram/scruffy/class/" << parts.join(",") + parts.join(",") end private diff --git a/railroad/models_diagram.rb b/lib/railroad/models_diagram.rb similarity index 100% rename from railroad/models_diagram.rb rename to lib/railroad/models_diagram.rb diff --git a/railroad/options_struct.rb b/lib/railroad/options_struct.rb similarity index 100% rename from railroad/options_struct.rb rename to lib/railroad/options_struct.rb diff --git a/railroad/uml_dumper.rb b/lib/railroad/uml_dumper.rb similarity index 100% rename from railroad/uml_dumper.rb rename to lib/railroad/uml_dumper.rb diff --git a/lib/shoes_app.rb b/lib/shoes_app.rb new file mode 100644 index 0000000..e939b7f --- /dev/null +++ b/lib/shoes_app.rb @@ -0,0 +1,5 @@ +require "yUMLmeRails" + +Shoes.app do + image "http://yuml.me/diagram/scruffy/class/" << YUMLmeRails.generate_diagram +end diff --git a/lib/yUMLmeRails.rb b/lib/yUMLmeRails.rb new file mode 100644 index 0000000..e648ad8 --- /dev/null +++ b/lib/yUMLmeRails.rb @@ -0,0 +1,49 @@ +APP_NAME = "railroad" +APP_HUMAN_NAME = "RailRoad" +APP_VERSION = [0,5,0] +COPYRIGHT = "Copyright (C) 2007-2008 Javier Smaldone" + +require 'ostruct' +require 'railroad/models_diagram' +#require 'railroad/controllers_diagram' +#require 'railroad/aasm_diagram' + +class YUMLmeRails + class << self + def generate_diagram + options = OpenStruct.new( + :all => true, + :brief => true, + :exclude => [], + :inheritance => false, + :join => false, + :label => false, + :modules => false, + :hide_magic => false, + :hide_types => false, + :hide_public => false, + :hide_protected => false, + :hide_private => false, + :plugins_models => false, + :root => '', + :transitive => true, + :verbose => false, + :xmi => false, + :yuml => true, + :command => 'models' + ) + + + if options.command == 'models' + diagram = ModelsDiagram.new options + #elsif options.command == 'controllers' + # diagram = ControllersDiagram.new options + #elsif options.command == 'aasm' + # diagram = AasmDiagram.new options + end + + diagram.generate + diagram.graph.to_yuml + end + end +end diff --git a/tasks/yUMLmeRails.rake b/tasks/yUMLmeRails.rake new file mode 100644 index 0000000..358e74a --- /dev/null +++ b/tasks/yUMLmeRails.rake @@ -0,0 +1,24 @@ +namespace :yUMLmeRails do + desc "Show model diagram" + task :app do + system "shoes app.rb" + end + + desc "Get yUML URL" + task :model_diagram_url => :environment do + puts "http://yuml.me/diagram/scruffy/class/" << YUMLmeRails.generate_diagram + end + + desc "Download yUML model diagram" + task :model_diagram => :environment do + url="http://yuml.me/diagram/scruffy/class/" << YUMLmeRails.generate_diagram + DIR="diagrams" + FileUtils.mkdir_p DIR + filename="#{DIR}/model_" << Time.new.strftime("%b_%d_%Y") << ".png" + system "wget -O #{filename} #{url}" + # TODO - Make the following work + #require 'open-uri' + #open(, "wb"). + # write(open("http://yuml.me/diagram/scruffy/class/" << YUMLmeRails.generate_diagram)) + end +end