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.
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