xamplr-gen 1.9.0
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/.document +5 -0
- data/.gitignore +22 -0
- data/COPYING +619 -0
- data/LICENSE +4 -0
- data/Makefile +11 -0
- data/README.md +33 -0
- data/Rakefile +66 -0
- data/VERSION +1 -0
- data/bin/xampl-gen +17 -0
- data/features/step_definitions/xamplr-gen_steps.rb +0 -0
- data/features/support/env.rb +6 -0
- data/features/xamplr-gen.feature +9 -0
- data/lib/xamplr-gen.rb +13 -0
- data/lib/xamplr-gen/.cvsignore +1 -0
- data/lib/xamplr-gen/graphml-out.rb +449 -0
- data/lib/xamplr-gen/my.gen.elements.xml +461 -0
- data/lib/xamplr-gen/simpleTemplate/danger.rx +4 -0
- data/lib/xamplr-gen/simpleTemplate/obsolete/input-c.r4 +35 -0
- data/lib/xamplr-gen/simpleTemplate/obsolete/play.r6.txt +12 -0
- data/lib/xamplr-gen/simpleTemplate/obsolete/play_more.r6.txt +20 -0
- data/lib/xamplr-gen/simpleTemplate/obsolete/test001.r5 +8 -0
- data/lib/xamplr-gen/simpleTemplate/obsolete/test002.r5 +13 -0
- data/lib/xamplr-gen/simpleTemplate/obsolete/test003.r5 +37 -0
- data/lib/xamplr-gen/simpleTemplate/old/r6.000.rb +122 -0
- data/lib/xamplr-gen/simpleTemplate/old/r6.001.rb +145 -0
- data/lib/xamplr-gen/simpleTemplate/play.r6 +12 -0
- data/lib/xamplr-gen/simpleTemplate/play_more.r6 +20 -0
- data/lib/xamplr-gen/simpleTemplate/play_noblanks.r6 +21 -0
- data/lib/xamplr-gen/simpleTemplate/playq.r6 +16 -0
- data/lib/xamplr-gen/simpleTemplate/r6.rb +87 -0
- data/lib/xamplr-gen/simpleTemplate/simple-template.rb +75 -0
- data/lib/xamplr-gen/templates/.cvsignore +3 -0
- data/lib/xamplr-gen/templates/child.template +47 -0
- data/lib/xamplr-gen/templates/child_indexed.template +89 -0
- data/lib/xamplr-gen/templates/child_modules.template +5 -0
- data/lib/xamplr-gen/templates/element_classes.template +11 -0
- data/lib/xamplr-gen/templates/element_data.template +283 -0
- data/lib/xamplr-gen/templates/element_empty.template +277 -0
- data/lib/xamplr-gen/templates/element_mixed.template +278 -0
- data/lib/xamplr-gen/templates/element_simple.template +277 -0
- data/lib/xamplr-gen/templates/package.template +38 -0
- data/lib/xamplr-gen/xampl-cl-gen.rb +89 -0
- data/lib/xamplr-gen/xampl-generator.rb +561 -0
- data/lib/xamplr-gen/xampl-hand-generated.rb +1534 -0
- data/lib/xamplr-gen/yuml-out.rb +127 -0
- data/licence.rb +17 -0
- data/test/helper.rb +10 -0
- data/test/test_xamplr-gen.rb +7 -0
- data/xamplr-gen.gemspec +98 -0
- metadata +124 -0
@@ -0,0 +1,127 @@
|
|
1
|
+
|
2
|
+
module XamplGenerator
|
3
|
+
|
4
|
+
class YUMLOut
|
5
|
+
|
6
|
+
def initialize(elements_map)
|
7
|
+
@elements_map = elements_map
|
8
|
+
end
|
9
|
+
|
10
|
+
def generate_class_nodes(element, include_mixins)
|
11
|
+
return if ignore_package(element.package)
|
12
|
+
|
13
|
+
class_name = "#{ element.package }::#{ element.class_name }"
|
14
|
+
mixin_name = "#{ element.package }::#{ element.class_name }"
|
15
|
+
|
16
|
+
@class_by_nstag[element.nstag] = element
|
17
|
+
@class_names_by_nstag[element.nstag] = class_name
|
18
|
+
|
19
|
+
if element.persisted then
|
20
|
+
write_entity_node(class_name, element.kind)
|
21
|
+
else
|
22
|
+
write_internal_node(class_name, element.kind)
|
23
|
+
end
|
24
|
+
|
25
|
+
if include_mixins then
|
26
|
+
write_mixin_node(class_name)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def generate_edges(element, include_mixins)
|
31
|
+
return if ignore_package(element.package)
|
32
|
+
|
33
|
+
element_name = @class_names_by_nstag[ element.nstag ]
|
34
|
+
|
35
|
+
element.child_element_child.each do | celement |
|
36
|
+
next if ignore_package(celement.package)
|
37
|
+
|
38
|
+
celement_name = @class_names_by_nstag[ celement.name ]
|
39
|
+
referenced_element = @class_by_nstag[ celement.name ]
|
40
|
+
|
41
|
+
if referenced_element.persisted then
|
42
|
+
write_entity_ref_edge(element_name, celement_name)
|
43
|
+
else
|
44
|
+
write_internal_ref_edge(element_name, celement_name)
|
45
|
+
end
|
46
|
+
if include_mixins then
|
47
|
+
write_mixin_ref_edge(element_name, celement_name)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def ignore_package(package)
|
53
|
+
return true if @excluded_packages.member?(package)
|
54
|
+
return false if @included_packages.nil?
|
55
|
+
return true unless @included_packages.member?(package)
|
56
|
+
return false
|
57
|
+
end
|
58
|
+
|
59
|
+
def write_yuml(base_filename, excluded_packages=[ ], included_packages=nil, include_mixins=false)
|
60
|
+
filename = "#{ base_filename }.yuml"
|
61
|
+
|
62
|
+
@excluded_packages = Set.new(excluded_packages)
|
63
|
+
@included_packages = included_packages ? Set.new(included_packages) : nil
|
64
|
+
|
65
|
+
@class_names_by_nstag = {} # NOTE -- this is used by yuml!!
|
66
|
+
@class_by_nstag = {} # NOTE -- this is used by yuml!!
|
67
|
+
|
68
|
+
@initialise_output = true
|
69
|
+
|
70
|
+
File.open(filename, "w") do | out |
|
71
|
+
@out = out
|
72
|
+
|
73
|
+
@elements_map.each_value do |elements|
|
74
|
+
elements.element_child.each do |element|
|
75
|
+
generate_class_nodes(element, include_mixins)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
@elements_map.each_value do |elements|
|
80
|
+
elements.element_child.each do |element|
|
81
|
+
generate_edges(element, include_mixins)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
return nil
|
87
|
+
end
|
88
|
+
|
89
|
+
def new_statement
|
90
|
+
if @initialise_output then
|
91
|
+
@initialise_output = false
|
92
|
+
else
|
93
|
+
@out << ",\n"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def write_entity_node(class_name, kind)
|
98
|
+
new_statement
|
99
|
+
@out << "[#{ class_name }{bg:red}]"
|
100
|
+
end
|
101
|
+
|
102
|
+
def write_internal_node(class_name, kind)
|
103
|
+
new_statement
|
104
|
+
@out << "[#{ class_name }{bg:blue}]"
|
105
|
+
end
|
106
|
+
|
107
|
+
def write_mixin_node(class_name)
|
108
|
+
new_statement
|
109
|
+
@out << "[#{ class_name }Mixin]"
|
110
|
+
end
|
111
|
+
|
112
|
+
def write_entity_ref_edge(class_node, external_node)
|
113
|
+
new_statement
|
114
|
+
@out << "[#{ class_node }]->[#{ external_node }]"
|
115
|
+
end
|
116
|
+
|
117
|
+
def write_internal_ref_edge(class_node, internal_node)
|
118
|
+
new_statement
|
119
|
+
@out << "[#{ class_node }]->[#{ internal_node }]"
|
120
|
+
end
|
121
|
+
|
122
|
+
def write_mixin_ref_edge(class_node, mixin_node)
|
123
|
+
new_statement
|
124
|
+
@out << "[#{ mixin_node }Mixin]^[#{ class_node }]"
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
data/licence.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
#this file is part of the xamplr-gen project (http://xampl.com/)
|
2
|
+
#
|
3
|
+
# Copyright (C) <year> <name of author>
|
4
|
+
#
|
5
|
+
#This program is free software: you can redistribute it and/or modify
|
6
|
+
#it under the terms of the GNU Affero General Public License as published by
|
7
|
+
#the Free Software Foundation, either version 3 of the License, or
|
8
|
+
#(at your option) any later version.
|
9
|
+
#
|
10
|
+
#This program is distributed in the hope that it will be useful,
|
11
|
+
#but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
#GNU Affero General Public License for more details.
|
14
|
+
#
|
15
|
+
#You should have received a copy of the GNU Affero General Public License
|
16
|
+
#along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
#
|
data/test/helper.rb
ADDED
data/xamplr-gen.gemspec
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{xamplr-gen}
|
8
|
+
s.version = "1.9.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Bob Hutchison"]
|
12
|
+
s.date = %q{2009-12-27}
|
13
|
+
s.default_executable = %q{xampl-gen}
|
14
|
+
s.description = %q{This is the xampl code generator for Ruby.}
|
15
|
+
s.email = %q{hutch@xampl.com}
|
16
|
+
s.executables = ["xampl-gen"]
|
17
|
+
s.extra_rdoc_files = [
|
18
|
+
"LICENSE",
|
19
|
+
"README.md"
|
20
|
+
]
|
21
|
+
s.files = [
|
22
|
+
".document",
|
23
|
+
".gitignore",
|
24
|
+
"COPYING",
|
25
|
+
"LICENSE",
|
26
|
+
"Makefile",
|
27
|
+
"README.md",
|
28
|
+
"Rakefile",
|
29
|
+
"VERSION",
|
30
|
+
"bin/xampl-gen",
|
31
|
+
"features/step_definitions/xamplr-gen_steps.rb",
|
32
|
+
"features/support/env.rb",
|
33
|
+
"features/xamplr-gen.feature",
|
34
|
+
"lib/xamplr-gen.rb",
|
35
|
+
"lib/xamplr-gen/.cvsignore",
|
36
|
+
"lib/xamplr-gen/graphml-out.rb",
|
37
|
+
"lib/xamplr-gen/my.gen.elements.xml",
|
38
|
+
"lib/xamplr-gen/simpleTemplate/danger.rx",
|
39
|
+
"lib/xamplr-gen/simpleTemplate/obsolete/input-c.r4",
|
40
|
+
"lib/xamplr-gen/simpleTemplate/obsolete/play.r6.txt",
|
41
|
+
"lib/xamplr-gen/simpleTemplate/obsolete/play_more.r6.txt",
|
42
|
+
"lib/xamplr-gen/simpleTemplate/obsolete/test001.r5",
|
43
|
+
"lib/xamplr-gen/simpleTemplate/obsolete/test002.r5",
|
44
|
+
"lib/xamplr-gen/simpleTemplate/obsolete/test003.r5",
|
45
|
+
"lib/xamplr-gen/simpleTemplate/old/r6.000.rb",
|
46
|
+
"lib/xamplr-gen/simpleTemplate/old/r6.001.rb",
|
47
|
+
"lib/xamplr-gen/simpleTemplate/play.r6",
|
48
|
+
"lib/xamplr-gen/simpleTemplate/play_more.r6",
|
49
|
+
"lib/xamplr-gen/simpleTemplate/play_noblanks.r6",
|
50
|
+
"lib/xamplr-gen/simpleTemplate/playq.r6",
|
51
|
+
"lib/xamplr-gen/simpleTemplate/r6.rb",
|
52
|
+
"lib/xamplr-gen/simpleTemplate/simple-template.rb",
|
53
|
+
"lib/xamplr-gen/templates/.cvsignore",
|
54
|
+
"lib/xamplr-gen/templates/child.template",
|
55
|
+
"lib/xamplr-gen/templates/child_indexed.template",
|
56
|
+
"lib/xamplr-gen/templates/child_modules.template",
|
57
|
+
"lib/xamplr-gen/templates/element_classes.template",
|
58
|
+
"lib/xamplr-gen/templates/element_data.template",
|
59
|
+
"lib/xamplr-gen/templates/element_empty.template",
|
60
|
+
"lib/xamplr-gen/templates/element_mixed.template",
|
61
|
+
"lib/xamplr-gen/templates/element_simple.template",
|
62
|
+
"lib/xamplr-gen/templates/package.template",
|
63
|
+
"lib/xamplr-gen/xampl-cl-gen.rb",
|
64
|
+
"lib/xamplr-gen/xampl-generator.rb",
|
65
|
+
"lib/xamplr-gen/xampl-hand-generated.rb",
|
66
|
+
"lib/xamplr-gen/yuml-out.rb",
|
67
|
+
"licence.rb",
|
68
|
+
"test/helper.rb",
|
69
|
+
"test/test_xamplr-gen.rb",
|
70
|
+
"xamplr-gen.gemspec"
|
71
|
+
]
|
72
|
+
s.homepage = %q{http://github.com/hutch/xamplr-gen}
|
73
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
74
|
+
s.require_paths = ["lib"]
|
75
|
+
s.rubygems_version = %q{1.3.5}
|
76
|
+
s.summary = %q{This is the xampl code generator for Ruby}
|
77
|
+
s.test_files = [
|
78
|
+
"test/helper.rb",
|
79
|
+
"test/test_xamplr-gen.rb"
|
80
|
+
]
|
81
|
+
|
82
|
+
if s.respond_to? :specification_version then
|
83
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
84
|
+
s.specification_version = 3
|
85
|
+
|
86
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
87
|
+
s.add_development_dependency(%q<cucumber>, [">= 0"])
|
88
|
+
s.add_runtime_dependency(%q<xamplr>, [">= 1.9.0"])
|
89
|
+
else
|
90
|
+
s.add_dependency(%q<cucumber>, [">= 0"])
|
91
|
+
s.add_dependency(%q<xamplr>, [">= 1.9.0"])
|
92
|
+
end
|
93
|
+
else
|
94
|
+
s.add_dependency(%q<cucumber>, [">= 0"])
|
95
|
+
s.add_dependency(%q<xamplr>, [">= 1.9.0"])
|
96
|
+
end
|
97
|
+
end
|
98
|
+
|
metadata
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: xamplr-gen
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.9.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Bob Hutchison
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-12-27 00:00:00 -05:00
|
13
|
+
default_executable: xampl-gen
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: cucumber
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: xamplr
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.9.0
|
34
|
+
version:
|
35
|
+
description: This is the xampl code generator for Ruby.
|
36
|
+
email: hutch@xampl.com
|
37
|
+
executables:
|
38
|
+
- xampl-gen
|
39
|
+
extensions: []
|
40
|
+
|
41
|
+
extra_rdoc_files:
|
42
|
+
- LICENSE
|
43
|
+
- README.md
|
44
|
+
files:
|
45
|
+
- .document
|
46
|
+
- .gitignore
|
47
|
+
- COPYING
|
48
|
+
- LICENSE
|
49
|
+
- Makefile
|
50
|
+
- README.md
|
51
|
+
- Rakefile
|
52
|
+
- VERSION
|
53
|
+
- bin/xampl-gen
|
54
|
+
- features/step_definitions/xamplr-gen_steps.rb
|
55
|
+
- features/support/env.rb
|
56
|
+
- features/xamplr-gen.feature
|
57
|
+
- lib/xamplr-gen.rb
|
58
|
+
- lib/xamplr-gen/.cvsignore
|
59
|
+
- lib/xamplr-gen/graphml-out.rb
|
60
|
+
- lib/xamplr-gen/my.gen.elements.xml
|
61
|
+
- lib/xamplr-gen/simpleTemplate/danger.rx
|
62
|
+
- lib/xamplr-gen/simpleTemplate/obsolete/input-c.r4
|
63
|
+
- lib/xamplr-gen/simpleTemplate/obsolete/play.r6.txt
|
64
|
+
- lib/xamplr-gen/simpleTemplate/obsolete/play_more.r6.txt
|
65
|
+
- lib/xamplr-gen/simpleTemplate/obsolete/test001.r5
|
66
|
+
- lib/xamplr-gen/simpleTemplate/obsolete/test002.r5
|
67
|
+
- lib/xamplr-gen/simpleTemplate/obsolete/test003.r5
|
68
|
+
- lib/xamplr-gen/simpleTemplate/old/r6.000.rb
|
69
|
+
- lib/xamplr-gen/simpleTemplate/old/r6.001.rb
|
70
|
+
- lib/xamplr-gen/simpleTemplate/play.r6
|
71
|
+
- lib/xamplr-gen/simpleTemplate/play_more.r6
|
72
|
+
- lib/xamplr-gen/simpleTemplate/play_noblanks.r6
|
73
|
+
- lib/xamplr-gen/simpleTemplate/playq.r6
|
74
|
+
- lib/xamplr-gen/simpleTemplate/r6.rb
|
75
|
+
- lib/xamplr-gen/simpleTemplate/simple-template.rb
|
76
|
+
- lib/xamplr-gen/templates/.cvsignore
|
77
|
+
- lib/xamplr-gen/templates/child.template
|
78
|
+
- lib/xamplr-gen/templates/child_indexed.template
|
79
|
+
- lib/xamplr-gen/templates/child_modules.template
|
80
|
+
- lib/xamplr-gen/templates/element_classes.template
|
81
|
+
- lib/xamplr-gen/templates/element_data.template
|
82
|
+
- lib/xamplr-gen/templates/element_empty.template
|
83
|
+
- lib/xamplr-gen/templates/element_mixed.template
|
84
|
+
- lib/xamplr-gen/templates/element_simple.template
|
85
|
+
- lib/xamplr-gen/templates/package.template
|
86
|
+
- lib/xamplr-gen/xampl-cl-gen.rb
|
87
|
+
- lib/xamplr-gen/xampl-generator.rb
|
88
|
+
- lib/xamplr-gen/xampl-hand-generated.rb
|
89
|
+
- lib/xamplr-gen/yuml-out.rb
|
90
|
+
- licence.rb
|
91
|
+
- test/helper.rb
|
92
|
+
- test/test_xamplr-gen.rb
|
93
|
+
- xamplr-gen.gemspec
|
94
|
+
has_rdoc: true
|
95
|
+
homepage: http://github.com/hutch/xamplr-gen
|
96
|
+
licenses: []
|
97
|
+
|
98
|
+
post_install_message:
|
99
|
+
rdoc_options:
|
100
|
+
- --charset=UTF-8
|
101
|
+
require_paths:
|
102
|
+
- lib
|
103
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: "0"
|
108
|
+
version:
|
109
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: "0"
|
114
|
+
version:
|
115
|
+
requirements: []
|
116
|
+
|
117
|
+
rubyforge_project:
|
118
|
+
rubygems_version: 1.3.5
|
119
|
+
signing_key:
|
120
|
+
specification_version: 3
|
121
|
+
summary: This is the xampl code generator for Ruby
|
122
|
+
test_files:
|
123
|
+
- test/helper.rb
|
124
|
+
- test/test_xamplr-gen.rb
|