umbrello_scaffold 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in umbrello_scaffold.gemspec
4
+ gemspec
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,12 @@
1
+ namespace :umbrello do
2
+
3
+ task :model do
4
+ UmbrelloScaffold::Parser.new(ARGV[1]).parse(false, *ARGV[2..(ARGV.size)])
5
+ end
6
+
7
+ task :scaffold do
8
+ UmbrelloScaffold::Parser.new(ARGV[1]).parse(true, *ARGV[2..(ARGV.size)])
9
+ end
10
+
11
+ end
12
+
@@ -0,0 +1,12 @@
1
+ require 'umbrello_scaffold'
2
+ require 'rails'
3
+
4
+ module UmbrelloScaffold
5
+ class Railtie < Rails::Railtie
6
+ railtie_name :umbrello_scaffold
7
+
8
+ rake_tasks do
9
+ load "tasks/umbrello.rake"
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module UmbrelloScaffold
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,43 @@
1
+ require "umbrello_scaffold/version"
2
+ require 'rubygems'
3
+ require 'nokogiri'
4
+
5
+ module UmbrelloScaffold
6
+
7
+ require 'umbrello_scaffold/railtie' if defined?(Rails)
8
+
9
+ class Parser
10
+
11
+ def initialize(file)
12
+ @document = Nokogiri::XML(open(file))
13
+ @datatypes = {}
14
+ @document.xpath('//UML:DataType').each do |datatype|
15
+ @datatypes[datatype.attr('xmi.id')] = datatype.attr('name')
16
+ end
17
+ @document.xpath('//UML:Class').each do |datatype|
18
+ @datatypes[datatype.attr('xmi.id')] = datatype.attr('name')
19
+ end
20
+ end
21
+
22
+ def parse(scaffolds = true, *args)
23
+ @document.xpath('//UML:Entity').each do |entity|
24
+ name = entity.attr('name')
25
+ attrs = []
26
+ is_id = false
27
+
28
+ Nokogiri::XML(entity.to_xml).xpath('//EntityAttribute').each do |attribute|
29
+ if attribute.attr('name') == 'id'
30
+ is_id = true
31
+ else
32
+ attrs << "#{attribute.attr('name')}:#{@datatypes[attribute.attr('type')]}"
33
+ end
34
+ end
35
+ what = (scaffolds && is_id) ? 'scaffold' : 'model'
36
+
37
+ system "rails generate #{what} #{name} #{attrs.join ' '} #{args.join ' '}"
38
+ end
39
+ end
40
+
41
+ end
42
+
43
+ end
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "umbrello_scaffold/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "umbrello_scaffold"
7
+ s.version = UmbrelloScaffold::VERSION
8
+ s.authors = ["Paweł Tarczykowski"]
9
+ s.email = ["farrel1@wp.pl"]
10
+ s.homepage = ""
11
+ s.summary = "Umbrello file import"
12
+ s.description = "Gem that generates scaffolds or models from Umbrello .xmi files"
13
+
14
+ s.add_dependency 'nokogiri'
15
+
16
+ s.rubyforge_project = "umbrello_scaffold"
17
+
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+
23
+ # specify any dependencies here; for example:
24
+ # s.add_development_dependency "rspec"
25
+ # s.add_runtime_dependency "rest-client"
26
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: umbrello_scaffold
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - "Pawe\xC5\x82 Tarczykowski"
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-02-01 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: nokogiri
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 3
29
+ segments:
30
+ - 0
31
+ version: "0"
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ description: Gem that generates scaffolds or models from Umbrello .xmi files
35
+ email:
36
+ - farrel1@wp.pl
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files: []
42
+
43
+ files:
44
+ - .gitignore
45
+ - Gemfile
46
+ - Rakefile
47
+ - lib/tasks/umbrello.rake
48
+ - lib/umbrello_scaffold.rb
49
+ - lib/umbrello_scaffold/railtie.rb
50
+ - lib/umbrello_scaffold/version.rb
51
+ - umbrello_scaffold.gemspec
52
+ homepage: ""
53
+ licenses: []
54
+
55
+ post_install_message:
56
+ rdoc_options: []
57
+
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ hash: 3
66
+ segments:
67
+ - 0
68
+ version: "0"
69
+ required_rubygems_version: !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ hash: 3
75
+ segments:
76
+ - 0
77
+ version: "0"
78
+ requirements: []
79
+
80
+ rubyforge_project: umbrello_scaffold
81
+ rubygems_version: 1.8.15
82
+ signing_key:
83
+ specification_version: 3
84
+ summary: Umbrello file import
85
+ test_files: []
86
+