xamplr-gen 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/.document +5 -0
  2. data/.gitignore +22 -0
  3. data/COPYING +619 -0
  4. data/LICENSE +4 -0
  5. data/Makefile +11 -0
  6. data/README.md +33 -0
  7. data/Rakefile +66 -0
  8. data/VERSION +1 -0
  9. data/bin/xampl-gen +17 -0
  10. data/features/step_definitions/xamplr-gen_steps.rb +0 -0
  11. data/features/support/env.rb +6 -0
  12. data/features/xamplr-gen.feature +9 -0
  13. data/lib/xamplr-gen.rb +13 -0
  14. data/lib/xamplr-gen/.cvsignore +1 -0
  15. data/lib/xamplr-gen/graphml-out.rb +449 -0
  16. data/lib/xamplr-gen/my.gen.elements.xml +461 -0
  17. data/lib/xamplr-gen/simpleTemplate/danger.rx +4 -0
  18. data/lib/xamplr-gen/simpleTemplate/obsolete/input-c.r4 +35 -0
  19. data/lib/xamplr-gen/simpleTemplate/obsolete/play.r6.txt +12 -0
  20. data/lib/xamplr-gen/simpleTemplate/obsolete/play_more.r6.txt +20 -0
  21. data/lib/xamplr-gen/simpleTemplate/obsolete/test001.r5 +8 -0
  22. data/lib/xamplr-gen/simpleTemplate/obsolete/test002.r5 +13 -0
  23. data/lib/xamplr-gen/simpleTemplate/obsolete/test003.r5 +37 -0
  24. data/lib/xamplr-gen/simpleTemplate/old/r6.000.rb +122 -0
  25. data/lib/xamplr-gen/simpleTemplate/old/r6.001.rb +145 -0
  26. data/lib/xamplr-gen/simpleTemplate/play.r6 +12 -0
  27. data/lib/xamplr-gen/simpleTemplate/play_more.r6 +20 -0
  28. data/lib/xamplr-gen/simpleTemplate/play_noblanks.r6 +21 -0
  29. data/lib/xamplr-gen/simpleTemplate/playq.r6 +16 -0
  30. data/lib/xamplr-gen/simpleTemplate/r6.rb +87 -0
  31. data/lib/xamplr-gen/simpleTemplate/simple-template.rb +75 -0
  32. data/lib/xamplr-gen/templates/.cvsignore +3 -0
  33. data/lib/xamplr-gen/templates/child.template +47 -0
  34. data/lib/xamplr-gen/templates/child_indexed.template +89 -0
  35. data/lib/xamplr-gen/templates/child_modules.template +5 -0
  36. data/lib/xamplr-gen/templates/element_classes.template +11 -0
  37. data/lib/xamplr-gen/templates/element_data.template +283 -0
  38. data/lib/xamplr-gen/templates/element_empty.template +277 -0
  39. data/lib/xamplr-gen/templates/element_mixed.template +278 -0
  40. data/lib/xamplr-gen/templates/element_simple.template +277 -0
  41. data/lib/xamplr-gen/templates/package.template +38 -0
  42. data/lib/xamplr-gen/xampl-cl-gen.rb +89 -0
  43. data/lib/xamplr-gen/xampl-generator.rb +561 -0
  44. data/lib/xamplr-gen/xampl-hand-generated.rb +1534 -0
  45. data/lib/xamplr-gen/yuml-out.rb +127 -0
  46. data/licence.rb +17 -0
  47. data/test/helper.rb +10 -0
  48. data/test/test_xamplr-gen.rb +7 -0
  49. data/xamplr-gen.gemspec +98 -0
  50. 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
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'shoulda'
4
+
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
7
+ require 'xamplr-gen'
8
+
9
+ class Test::Unit::TestCase
10
+ end
@@ -0,0 +1,7 @@
1
+ require 'helper'
2
+
3
+ class TestXamplrGen < Test::Unit::TestCase
4
+ should "probably rename this file and start testing for real" do
5
+ flunk "hey buddy, you should probably rename this file and start testing for real"
6
+ end
7
+ end
@@ -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