xamplr 1.2.0 → 1.3.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. data/.document +5 -0
  2. data/.gitignore +12 -0
  3. data/CHANGES.txt +37 -0
  4. data/COPYING +661 -0
  5. data/Makefile +13 -0
  6. data/README.rdoc +24 -4
  7. data/Rakefile +2 -2
  8. data/VERSION.yml +3 -2
  9. data/bin/xampl-gen +17 -0
  10. data/docs/intro/.gitignore +1 -0
  11. data/docs/intro/example1/example1.rb +6 -0
  12. data/docs/intro/example1/xml/hello.xml +1 -0
  13. data/docs/intro/example2/example2.rb +38 -0
  14. data/docs/intro/example2/project-generator.rb +22 -0
  15. data/docs/intro/example2/xml/hello.xml +2 -0
  16. data/docs/intro/example3/example3.rb +30 -0
  17. data/docs/intro/example3/example3a.rb +16 -0
  18. data/docs/intro/example3/generated.png +0 -0
  19. data/docs/intro/example3/grab-yuml.rb +10 -0
  20. data/docs/intro/example3/greeter.rb +15 -0
  21. data/docs/intro/example3/greeting.rb +9 -0
  22. data/docs/intro/example3/project-generator.rb +25 -0
  23. data/docs/intro/example3/xml/greeter.xml +6 -0
  24. data/docs/intro/example4/example4.rb +27 -0
  25. data/docs/intro/example4/example4a.rb +19 -0
  26. data/docs/intro/example4/grab-yuml.rb +10 -0
  27. data/docs/intro/example4/greeter.rb +15 -0
  28. data/docs/intro/example4/greeting.rb +9 -0
  29. data/docs/intro/example4/project-generator.rb +25 -0
  30. data/docs/intro/example4/xml/greeter.xml +6 -0
  31. data/docs/intro/grab-yuml.rb +10 -0
  32. data/docs/intro/project-generator.rb +51 -0
  33. data/docs/intro/xampl.lyx +1494 -0
  34. data/docs/intro/xampl.pdf +0 -0
  35. data/examples/employees/final/xampl-gen.rb +38 -0
  36. data/examples/employees/final/xml/ddd-final.xml +86 -0
  37. data/examples/employees/final-xampl/xampl-gen.rb +38 -0
  38. data/examples/employees/final-xampl/xml/ddd-final-xampl.xml +86 -0
  39. data/examples/employees/first/xampl-gen.rb +38 -0
  40. data/examples/employees/first/xml/ddd-first.xml +48 -0
  41. data/examples/employees/twist/twist.graphml +333 -0
  42. data/examples/employees/twist/xampl-gen.rb +38 -0
  43. data/examples/employees/twist/xml/twist.xml +90 -0
  44. data/examples/employees/xamplr-twist.xml +2 -0
  45. data/examples/employees/yuml-diagrams/DDD-final-approach.graphml +393 -0
  46. data/examples/employees/yuml-diagrams/DDD-final-xampl-approach.graphml +265 -0
  47. data/examples/employees/yuml-diagrams/DDD-ideal-final-approach.graphml +357 -0
  48. data/examples/employees/yuml-diagrams/ddd-final.png +0 -0
  49. data/examples/employees/yuml-diagrams/ddd-final.yuml +8 -0
  50. data/examples/employees/yuml-diagrams/ddd-first.png +0 -0
  51. data/examples/employees/yuml-diagrams/ddd-first.yuml +7 -0
  52. data/examples/employees/yuml-diagrams/final-yed.png +0 -0
  53. data/examples/employees/yuml-diagrams/first-yed.png +0 -0
  54. data/examples/employees/yuml-diagrams/twist.png +0 -0
  55. data/examples/employees/yuml-diagrams/twist.yuml +12 -0
  56. data/examples/employees/yuml-diagrams/xamplr-final-no-mixins.png +0 -0
  57. data/examples/employees/yuml-diagrams/xamplr-final-simplified.png +0 -0
  58. data/examples/employees/yuml-diagrams/xamplr-final-with-mixins.png +0 -0
  59. data/examples/employees/yuml-diagrams/yuml-simplified.txt +19 -0
  60. data/examples/employees/yuml-diagrams/yuml-with-mixins.txt +53 -0
  61. data/examples/employees/yuml-diagrams/yuml.txt +27 -0
  62. data/examples/hobbies/Makefile +5 -0
  63. data/examples/hobbies/hobbies.rb +193 -0
  64. data/examples/hobbies/project-generator.rb +25 -0
  65. data/examples/hobbies/xampl-gen.rb +38 -0
  66. data/examples/hobbies/xml/hobby.xml +3 -0
  67. data/examples/hobbies/xml/people.xml +5 -0
  68. data/examples/random-people/.gitignore +2 -0
  69. data/examples/random-people/Makefile +5 -1
  70. data/examples/random-people/xampl-gen.rb +5 -2
  71. data/examples/random-people-shared-addresses/.gitignore +2 -0
  72. data/examples/random-people-shared-addresses/Makefile +8 -9
  73. data/examples/random-people-shared-addresses/batch-load-users-profiled.rb +91 -0
  74. data/examples/random-people-shared-addresses/batch-load-users-safe.rb +81 -0
  75. data/examples/random-people-shared-addresses/batch-load-users.rb +59 -63
  76. data/examples/random-people-shared-addresses/xampl-gen.rb +2 -0
  77. data/examples/read-testing/.gitignore +2 -0
  78. data/examples/read-testing/rrr.rb +2 -1
  79. data/examples/read-testing/xampl-gen.rb +2 -0
  80. data/examples/tokyo-cabinet-experimental/.gitignore +2 -0
  81. data/examples/tokyo-cabinet-experimental/xampl-gen.rb +2 -0
  82. data/examples/write-testing/README +4 -0
  83. data/examples/write-testing/RESULTS.home +33 -0
  84. data/examples/write-testing/RESULTS.raconteur +33 -0
  85. data/examples/write-testing/write-speed-test.rb +40 -0
  86. data/lib/xamplr/.cvsignore +1 -0
  87. data/lib/xamplr/TODO +2 -1
  88. data/lib/xamplr/exceptions.rb +24 -1
  89. data/lib/xamplr/from-xml.rb +13 -5
  90. data/lib/xamplr/graphml-out.rb +6 -25
  91. data/lib/xamplr/indexed-array.rb +10 -2
  92. data/lib/xamplr/persist-to-xml.rb +6 -7
  93. data/lib/xamplr/persistence.rb +132 -48
  94. data/lib/xamplr/persister.rb +48 -25
  95. data/lib/xamplr/persisters/filesystem.rb +8 -2
  96. data/lib/xamplr/persisters/tokyo-cabinet.rb +243 -63
  97. data/lib/xamplr/persisters/tokyo-cabinet.rb.1-DB +694 -0
  98. data/lib/xamplr/persisters/tokyo-cabinet.rb.N-DB +692 -0
  99. data/lib/xamplr/persisters/tokyo-cabinet.rb.NICE-TRY +807 -0
  100. data/lib/xamplr/templates/.cvsignore +3 -0
  101. data/lib/xamplr/templates/child_indexed.template +6 -6
  102. data/lib/xamplr/templates/element_data.template +2 -1
  103. data/lib/xamplr/templates/element_empty.template +2 -10
  104. data/lib/xamplr/templates/element_mixed.template +2 -1
  105. data/lib/xamplr/templates/element_simple.template +2 -1
  106. data/lib/xamplr/templates/package.template +13 -1
  107. data/lib/xamplr/visitor.rb +7 -6
  108. data/lib/xamplr/visitors.rb +2 -1
  109. data/lib/xamplr/xampl-cl-gen.rb +89 -0
  110. data/lib/xamplr/xampl-generator.rb +86 -50
  111. data/lib/xamplr/xampl-object.rb +51 -0
  112. data/lib/xamplr/xampl-persisted-object.rb +13 -4
  113. data/lib/xamplr/yuml-out.rb +129 -0
  114. data/lib/xamplr-generator.rb +0 -1
  115. data/lib/xamplr.rb +18 -18
  116. data/regression/tc-indexes-crossing-pid-boundaries/Makefile +14 -0
  117. data/regression/tc-indexes-crossing-pid-boundaries/bad-idea.rb +40 -0
  118. data/regression/tc-indexes-crossing-pid-boundaries/fail-badly.rb +17 -0
  119. data/regression/tc-indexes-crossing-pid-boundaries/fail.rb +11 -0
  120. data/regression/tc-indexes-crossing-pid-boundaries/fucking-bad-idea.rb +44 -0
  121. data/regression/tc-indexes-crossing-pid-boundaries/setup.rb +15 -0
  122. data/regression/tc-indexes-crossing-pid-boundaries/xml/bad-idea.xml +4 -0
  123. data/regression/tightly-nested-mutual-mentions/Makefile +14 -0
  124. data/regression/tightly-nested-mutual-mentions/build.rb +31 -0
  125. data/regression/tightly-nested-mutual-mentions/load.rb +21 -0
  126. data/regression/tightly-nested-mutual-mentions/repo-keep.tgz +0 -0
  127. data/regression/tightly-nested-mutual-mentions/setup.rb +8 -0
  128. data/regression/tightly-nested-mutual-mentions/xampl-gen.rb +36 -0
  129. data/regression/tightly-nested-mutual-mentions/xml/stuff.xml +7 -0
  130. data/xamplr.gemspec +322 -0
  131. metadata +116 -13
  132. data/test/test_helper.rb +0 -10
  133. data/test/xamplr_test.rb +0 -7
@@ -0,0 +1,357 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <graphml xmlns="http://graphml.graphdrawing.org/xmlns/graphml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns/graphml http://www.yworks.com/xml/schema/graphml/1.0/ygraphml.xsd">
3
+ <key for="node" id="d0" yfiles.type="nodegraphics"/>
4
+ <key attr.name="description" attr.type="string" for="node" id="d1"/>
5
+ <key for="edge" id="d2" yfiles.type="edgegraphics"/>
6
+ <key attr.name="description" attr.type="string" for="edge" id="d3"/>
7
+ <key for="graphml" id="d4" yfiles.type="resources"/>
8
+ <graph edgedefault="directed" id="G" parse.edges="12" parse.nodes="11" parse.order="free">
9
+ <node id="n0">
10
+ <data key="d0">
11
+ <y:UMLClassNode>
12
+ <y:Geometry height="44.62109375" width="229.4521484375" x="533.9048781622024" y="278.484375"/>
13
+ <y:Fill color="#99CCFF" transparent="false"/>
14
+ <y:BorderStyle color="#000000" type="line" width="2.0"/>
15
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="172.7080078125" x="28.3720703125" y="26.1328125">Employees::HourlyPayroll
16
+ </y:NodeLabel>
17
+ <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
18
+ <y:AttributeLabel></y:AttributeLabel>
19
+ <y:MethodLabel></y:MethodLabel>
20
+ </y:UML>
21
+ </y:UMLClassNode>
22
+ </data>
23
+ <data key="d1">UMLClass</data>
24
+ </node>
25
+ <node id="n1">
26
+ <data key="d0">
27
+ <y:UMLClassNode>
28
+ <y:Geometry height="44.62109375" width="229.4521484375" x="663.6310686383929" y="353.10546875"/>
29
+ <y:Fill color="#FFFFFF" transparent="false"/>
30
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
31
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#999999" visible="true" width="131.3974609375" x="49.02734375" y="3.0">Employees::Payrole
32
+ </y:NodeLabel>
33
+ <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="false">
34
+ <y:AttributeLabel></y:AttributeLabel>
35
+ <y:MethodLabel></y:MethodLabel>
36
+ </y:UML>
37
+ </y:UMLClassNode>
38
+ </data>
39
+ <data key="d1">UMLClass</data>
40
+ </node>
41
+ <node id="n2">
42
+ <data key="d0">
43
+ <y:UMLClassNode>
44
+ <y:Geometry height="44.62109375" width="229.4521484375" x="591.2679734002976" y="203.86328125"/>
45
+ <y:Fill color="#FFCC99" transparent="false"/>
46
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
47
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="131.3974609375" x="49.02734375" y="26.1328125">Employees::Payrole
48
+ </y:NodeLabel>
49
+ <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="mixin" use3DEffect="false">
50
+ <y:AttributeLabel></y:AttributeLabel>
51
+ <y:MethodLabel></y:MethodLabel>
52
+ </y:UML>
53
+ </y:UMLClassNode>
54
+ </data>
55
+ <data key="d1">UMLClass</data>
56
+ </node>
57
+ <node id="n3">
58
+ <data key="d0">
59
+ <y:UMLClassNode>
60
+ <y:Geometry height="44.62109375" width="229.4521484375" x="793.3572591145834" y="278.484375"/>
61
+ <y:Fill color="#99CCFF" transparent="false"/>
62
+ <y:BorderStyle color="#000000" type="line" width="2.0"/>
63
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="181.3154296875" x="24.068359375" y="26.1328125">Employees::SalariedPayroll
64
+ </y:NodeLabel>
65
+ <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
66
+ <y:AttributeLabel></y:AttributeLabel>
67
+ <y:MethodLabel></y:MethodLabel>
68
+ </y:UML>
69
+ </y:UMLClassNode>
70
+ </data>
71
+ <data key="d1">UMLClass</data>
72
+ </node>
73
+ <node id="n4">
74
+ <data key="d0">
75
+ <y:UMLClassNode>
76
+ <y:Geometry height="44.62109375" width="229.4521484375" x="15.000116257440482" y="278.484375"/>
77
+ <y:Fill color="#99CCFF" transparent="false"/>
78
+ <y:BorderStyle color="#000000" type="line" width="2.0"/>
79
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="219.4521484375" x="5.0" y="26.1328125">Employees::DefinedContribution
80
+ </y:NodeLabel>
81
+ <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
82
+ <y:AttributeLabel></y:AttributeLabel>
83
+ <y:MethodLabel></y:MethodLabel>
84
+ </y:UML>
85
+ </y:UMLClassNode>
86
+ </data>
87
+ <data key="d1">UMLClass</data>
88
+ </node>
89
+ <node id="n5">
90
+ <data key="d0">
91
+ <y:UMLClassNode>
92
+ <y:Geometry height="44.62109375" width="229.4521484375" x="144.72630673363096" y="353.10546875"/>
93
+ <y:Fill color="#FFFFFF" transparent="false"/>
94
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
95
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#999999" visible="true" width="184.16552734375" x="22.643310546875" y="3.0">Employees::RetirementPlan
96
+ </y:NodeLabel>
97
+ <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="" use3DEffect="false">
98
+ <y:AttributeLabel></y:AttributeLabel>
99
+ <y:MethodLabel></y:MethodLabel>
100
+ </y:UML>
101
+ </y:UMLClassNode>
102
+ </data>
103
+ <data key="d1">UMLClass</data>
104
+ </node>
105
+ <node id="n6">
106
+ <data key="d0">
107
+ <y:UMLClassNode>
108
+ <y:Geometry height="44.62109375" width="229.4521484375" x="217.0894019717262" y="203.86328125"/>
109
+ <y:Fill color="#FFCC99" transparent="false"/>
110
+ <y:BorderStyle color="#000000" type="line" width="1.0"/>
111
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="184.16552734375" x="22.643310546875" y="26.1328125">Employees::RetirementPlan
112
+ </y:NodeLabel>
113
+ <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="mixin" use3DEffect="false">
114
+ <y:AttributeLabel></y:AttributeLabel>
115
+ <y:MethodLabel></y:MethodLabel>
116
+ </y:UML>
117
+ </y:UMLClassNode>
118
+ </data>
119
+ <data key="d1">UMLClass</data>
120
+ </node>
121
+ <node id="n7">
122
+ <data key="d0">
123
+ <y:UMLClassNode>
124
+ <y:Geometry height="44.62109375" width="229.4521484375" x="274.45249720982144" y="278.484375"/>
125
+ <y:Fill color="#99CCFF" transparent="false"/>
126
+ <y:BorderStyle color="#000000" type="line" width="2.0"/>
127
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="181.302734375" x="24.07470703125" y="26.1328125">Employees::DefinedBenefit
128
+ </y:NodeLabel>
129
+ <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
130
+ <y:AttributeLabel></y:AttributeLabel>
131
+ <y:MethodLabel></y:MethodLabel>
132
+ </y:UML>
133
+ </y:UMLClassNode>
134
+ </data>
135
+ <data key="d1">UMLClass</data>
136
+ </node>
137
+ <node id="n8">
138
+ <data key="d0">
139
+ <y:UMLClassNode>
140
+ <y:Geometry height="44.62109375" width="229.4521484375" x="404.1786876860119" y="129.2421875"/>
141
+ <y:Fill color="#99CCFF" transparent="false"/>
142
+ <y:BorderStyle color="#000000" type="line" width="2.0"/>
143
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="179.296875" x="25.07763671875" y="26.1328125">Employees::EmployeeType
144
+ </y:NodeLabel>
145
+ <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
146
+ <y:AttributeLabel></y:AttributeLabel>
147
+ <y:MethodLabel></y:MethodLabel>
148
+ </y:UML>
149
+ </y:UMLClassNode>
150
+ </data>
151
+ <data key="d1">UMLClass</data>
152
+ </node>
153
+ <node id="n9">
154
+ <data key="d0">
155
+ <y:UMLClassNode>
156
+ <y:Geometry height="44.62109375" width="229.4521484375" x="404.1786876860119" y="0.0"/>
157
+ <y:Fill color="#99CCFF" transparent="false"/>
158
+ <y:BorderStyle color="#000000" type="line" width="2.0"/>
159
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="161.5361328125" x="33.9580078125" y="26.1328125">Employees::Department
160
+ </y:NodeLabel>
161
+ <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
162
+ <y:AttributeLabel></y:AttributeLabel>
163
+ <y:MethodLabel></y:MethodLabel>
164
+ </y:UML>
165
+ </y:UMLClassNode>
166
+ </data>
167
+ <data key="d1">UMLClass</data>
168
+ </node>
169
+ <node id="n10">
170
+ <data key="d0">
171
+ <y:UMLClassNode>
172
+ <y:Geometry height="44.62109375" width="229.4521484375" x="404.1786876860119" y="64.62109375"/>
173
+ <y:Fill color="#99CCFF" transparent="false"/>
174
+ <y:BorderStyle color="#000000" type="line" width="2.0"/>
175
+ <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="13" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="34.62109375" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="146.517578125" x="41.46728515625" y="26.1328125">Employees::Employee
176
+ </y:NodeLabel>
177
+ <y:UML clipContent="true" constraint="" omitDetails="false" stereotype="data" use3DEffect="false">
178
+ <y:AttributeLabel></y:AttributeLabel>
179
+ <y:MethodLabel></y:MethodLabel>
180
+ </y:UML>
181
+ </y:UMLClassNode>
182
+ </data>
183
+ <data key="d1">UMLClass</data>
184
+ </node>
185
+ <edge id="e0" source="n0" target="n1">
186
+ <data key="d2">
187
+ <y:PolyLineEdge>
188
+ <y:Path sx="0.0" sy="22.310546875" tx="-57.363037109375" ty="-22.310546875">
189
+ <y:Point x="648.6309523809524" y="338.10546875"/>
190
+ <y:Point x="720.9941057477679" y="338.10546875"/>
191
+ </y:Path>
192
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
193
+ <y:Arrows source="none" target="short"/>
194
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="34.181547619047706" y="16.970703125"></y:EdgeLabel>
195
+ <y:BendStyle smoothed="false"/>
196
+ </y:PolyLineEdge>
197
+ </data>
198
+ <data key="d3">UMLuses</data>
199
+ </edge>
200
+ <edge id="e1" source="n2" target="n0">
201
+ <data key="d2">
202
+ <y:PolyLineEdge>
203
+ <y:Path sx="-57.363037109375" sy="22.310546875" tx="0.0" ty="-22.310546875"/>
204
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
205
+ <y:Arrows source="white_delta" target="none"/>
206
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.0000038752480123" y="12.970703125"></y:EdgeLabel>
207
+ <y:BendStyle smoothed="false"/>
208
+ </y:PolyLineEdge>
209
+ </data>
210
+ <data key="d3">UMLinherits</data>
211
+ </edge>
212
+ <edge id="e2" source="n3" target="n1">
213
+ <data key="d2">
214
+ <y:PolyLineEdge>
215
+ <y:Path sx="0.0" sy="22.310546875" tx="57.363037109375" ty="-22.310546875">
216
+ <y:Point x="908.0833333333334" y="338.10546875"/>
217
+ <y:Point x="835.7201799665179" y="338.10546875"/>
218
+ </y:Path>
219
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
220
+ <y:Arrows source="none" target="short"/>
221
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-38.181556338355676" y="16.970703125"></y:EdgeLabel>
222
+ <y:BendStyle smoothed="false"/>
223
+ </y:PolyLineEdge>
224
+ </data>
225
+ <data key="d3">UMLuses</data>
226
+ </edge>
227
+ <edge id="e3" source="n2" target="n3">
228
+ <data key="d2">
229
+ <y:PolyLineEdge>
230
+ <y:Path sx="57.363037109375" sy="22.310546875" tx="0.0" ty="-22.310546875">
231
+ <y:Point x="763.3570847284226" y="263.484375"/>
232
+ <y:Point x="908.0833333333334" y="263.484375"/>
233
+ </y:Path>
234
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
235
+ <y:Arrows source="white_delta" target="none"/>
236
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="70.36315336681548" y="16.970703125"></y:EdgeLabel>
237
+ <y:BendStyle smoothed="false"/>
238
+ </y:PolyLineEdge>
239
+ </data>
240
+ <data key="d3">UMLinherits</data>
241
+ </edge>
242
+ <edge id="e4" source="n4" target="n5">
243
+ <data key="d2">
244
+ <y:PolyLineEdge>
245
+ <y:Path sx="0.0" sy="22.310546875" tx="-57.363037109375" ty="-22.310546875">
246
+ <y:Point x="129.72619047619048" y="338.10546875"/>
247
+ <y:Point x="202.08934384300596" y="338.10546875"/>
248
+ </y:Path>
249
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
250
+ <y:Arrows source="none" target="short"/>
251
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="34.18157087053572" y="16.970703125"></y:EdgeLabel>
252
+ <y:BendStyle smoothed="false"/>
253
+ </y:PolyLineEdge>
254
+ </data>
255
+ <data key="d3">UMLuses</data>
256
+ </edge>
257
+ <edge id="e5" source="n6" target="n4">
258
+ <data key="d2">
259
+ <y:PolyLineEdge>
260
+ <y:Path sx="-57.363037109375" sy="22.310546875" tx="0.0" ty="-22.310546875">
261
+ <y:Point x="274.4524390811012" y="263.484375"/>
262
+ <y:Point x="129.72619047619048" y="263.484375"/>
263
+ </y:Path>
264
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
265
+ <y:Arrows source="white_delta" target="none"/>
266
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-74.36313883463541" y="16.970703125"></y:EdgeLabel>
267
+ <y:BendStyle smoothed="false"/>
268
+ </y:PolyLineEdge>
269
+ </data>
270
+ <data key="d3">UMLinherits</data>
271
+ </edge>
272
+ <edge id="e6" source="n7" target="n5">
273
+ <data key="d2">
274
+ <y:PolyLineEdge>
275
+ <y:Path sx="0.0" sy="22.310546875" tx="57.363037109375" ty="-22.310546875">
276
+ <y:Point x="389.17857142857144" y="338.10546875"/>
277
+ <y:Point x="316.81541806175596" y="338.10546875"/>
278
+ </y:Path>
279
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
280
+ <y:Arrows source="none" target="short"/>
281
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-38.18156360444567" y="16.970703125"></y:EdgeLabel>
282
+ <y:BendStyle smoothed="false"/>
283
+ </y:PolyLineEdge>
284
+ </data>
285
+ <data key="d3">UMLuses</data>
286
+ </edge>
287
+ <edge id="e7" source="n6" target="n7">
288
+ <data key="d2">
289
+ <y:PolyLineEdge>
290
+ <y:Path sx="57.363037109375" sy="22.310546875" tx="0.0" ty="-22.310546875"/>
291
+ <y:LineStyle color="#000000" type="line" width="1.0"/>
292
+ <y:Arrows source="white_delta" target="none"/>
293
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="2.000018407428115" y="12.970703125"></y:EdgeLabel>
294
+ <y:BendStyle smoothed="false"/>
295
+ </y:PolyLineEdge>
296
+ </data>
297
+ <data key="d3">UMLinherits</data>
298
+ </edge>
299
+ <edge id="e8" source="n8" target="n6">
300
+ <data key="d2">
301
+ <y:PolyLineEdge>
302
+ <y:Path sx="-57.363037109375" sy="22.310546875" tx="0.0" ty="-22.310546875">
303
+ <y:Point x="461.5417247953869" y="188.86328125"/>
304
+ <y:Point x="331.8154761904762" y="188.86328125"/>
305
+ </y:Path>
306
+ <y:LineStyle color="#000000" type="line" width="2.0"/>
307
+ <y:Arrows source="none" target="short"/>
308
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="-66.86311703636534" y="16.970703125"></y:EdgeLabel>
309
+ <y:BendStyle smoothed="false"/>
310
+ </y:PolyLineEdge>
311
+ </data>
312
+ <data key="d3">UMLuses</data>
313
+ </edge>
314
+ <edge id="e9" source="n8" target="n2">
315
+ <data key="d2">
316
+ <y:PolyLineEdge>
317
+ <y:Path sx="57.363037109375" sy="22.310546875" tx="0.0" ty="-22.310546875">
318
+ <y:Point x="576.2677990141369" y="188.86328125"/>
319
+ <y:Point x="705.9940476190476" y="188.86328125"/>
320
+ </y:Path>
321
+ <y:LineStyle color="#000000" type="line" width="2.0"/>
322
+ <y:Arrows source="none" target="short"/>
323
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="62.863101050967316" y="16.970703125"></y:EdgeLabel>
324
+ <y:BendStyle smoothed="false"/>
325
+ </y:PolyLineEdge>
326
+ </data>
327
+ <data key="d3">UMLuses</data>
328
+ </edge>
329
+ <edge id="e10" source="n9" target="n10">
330
+ <data key="d2">
331
+ <y:PolyLineEdge>
332
+ <y:Path sx="0.0" sy="22.310546875" tx="0.0" ty="-22.310546875"/>
333
+ <y:LineStyle color="#000000" type="line" width="2.0"/>
334
+ <y:Arrows source="none" target="short"/>
335
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="1.9999767485119264" y="7.9609375"></y:EdgeLabel>
336
+ <y:BendStyle smoothed="false"/>
337
+ </y:PolyLineEdge>
338
+ </data>
339
+ <data key="d3">UMLuses</data>
340
+ </edge>
341
+ <edge id="e11" source="n10" target="n8">
342
+ <data key="d2">
343
+ <y:PolyLineEdge>
344
+ <y:Path sx="0.0" sy="22.310546875" tx="0.0" ty="-22.310546875"/>
345
+ <y:LineStyle color="#000000" type="line" width="2.0"/>
346
+ <y:Arrows source="none" target="short"/>
347
+ <y:EdgeLabel alignment="center" distance="2.0" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="4.0" modelName="six_pos" modelPosition="tail" preferredPlacement="anywhere" ratio="0.5" textColor="#000000" visible="true" width="4.0" x="1.9999767485119264" y="7.9609375"></y:EdgeLabel>
348
+ <y:BendStyle smoothed="false"/>
349
+ </y:PolyLineEdge>
350
+ </data>
351
+ <data key="d3">UMLuses</data>
352
+ </edge>
353
+ </graph>
354
+ <data key="d4">
355
+ <y:Resources/>
356
+ </data>
357
+ </graphml>
@@ -0,0 +1,8 @@
1
+ [RetirementPlan]^[DefinedContribution],
2
+ [RetirementPlan]^[DefinedBenefit],
3
+ [Payroll]^[HourlyPayroll],
4
+ [Payroll]^[SalariedPayroll],
5
+ [EmployeeType]->*[RetirementPlan],
6
+ [EmployeeType]->*[Payroll],
7
+ [Employee]*->[EmployeeType],
8
+ [Department]-*[Employee]
@@ -0,0 +1,7 @@
1
+ [RetirementPlan]^[DefinedContribution],
2
+ [RetirementPlan]^[DefinedBenefit],
3
+ [Employee]^[HourlyEmployee],
4
+ [Employee]^[SalariedEmployee],
5
+ [HourlyEmployee]->[DefinedContribution],
6
+ [SalariedEmployee]->[DefinedBenefit],
7
+ [Department]-*[Employee]
@@ -0,0 +1,12 @@
1
+ [RetirementPlan::Mixin]^[DefinedContribution],
2
+ [RetirementPlan::Mixin]^[DefinedBenefit],
3
+ [Payroll::Mixin]^[HourlyPayroll],
4
+ [Payroll::Mixin]^[SalariedPayroll],
5
+ [EmployeeType]->*[RetirementPlan::Mixin],
6
+ [EmployeeType]->*[Payroll::Mixin],
7
+ [Employee]*->[EmployeeType],
8
+ [Department]<->*[Employee],
9
+ [SalariedPayroll]->[Payroll],
10
+ [HourlyPayroll]->[Payroll],
11
+ [DefinedBenefit]->[RetirementPlan],
12
+ [DefinedContribution]->[RetirementPlan]
@@ -0,0 +1,19 @@
1
+ [Employees::HourlyPayroll{bg:red}],
2
+ [Employees::Payrole{bg:blue}],
3
+ [Employees::SalariedPayroll{bg:red}],
4
+ [Employees::DefinedContribution{bg:red}],
5
+ [Employees::RetirementPlan{bg:blue}],
6
+ [Employees::DefinedBenefit{bg:red}],
7
+ [Employees::EmployeeType{bg:red}],
8
+ [Employees::Department{bg:red}],
9
+ [Employees::Employee{bg:red}],
10
+ [Employees::HourlyPayroll]->[Employees::Payrole],
11
+ [Employees::SalariedPayroll]->[Employees::Payrole],
12
+ [Employees::DefinedContribution]->[Employees::RetirementPlan],
13
+ [Employees::DefinedBenefit]->[Employees::RetirementPlan],
14
+ [Employees::EmployeeType]->[Employees::DefinedContribution],
15
+ [Employees::EmployeeType]->[Employees::HourlyPayroll],
16
+ [Employees::EmployeeType]->[Employees::SalariedPayroll],
17
+ [Employees::EmployeeType]->[Employees::DefinedBenefit],
18
+ [Employees::Department]->[Employees::Employee],
19
+ [Employees::Employee]->[Employees::EmployeeType]
@@ -0,0 +1,53 @@
1
+ ,
2
+ [Employees::Company{bg:red}],
3
+ [Employees::CompanyMixin],
4
+ [Employees::HourlyPayroll{bg:red}],
5
+ [Employees::HourlyPayrollMixin],
6
+ [Employees::Payrole{bg:blue}],
7
+ [Employees::PayroleMixin],
8
+ [Employees::SalariedPayroll{bg:red}],
9
+ [Employees::SalariedPayrollMixin],
10
+ [Employees::DefinedContribution{bg:red}],
11
+ [Employees::DefinedContributionMixin],
12
+ [Employees::RetirementPlan{bg:blue}],
13
+ [Employees::RetirementPlanMixin],
14
+ [Employees::DefinedBenefit{bg:red}],
15
+ [Employees::DefinedBenefitMixin],
16
+ [Employees::EmployeeType{bg:red}],
17
+ [Employees::EmployeeTypeMixin],
18
+ [Employees::Department{bg:red}],
19
+ [Employees::DepartmentMixin],
20
+ [Employees::Employee{bg:red}],
21
+ [Employees::EmployeeMixin],
22
+ [Employees::Company]->[Employees::HourlyPayroll],
23
+ [Employees::HourlyPayrollMixin]^[Employees::Company],
24
+ [Employees::Company]->[Employees::SalariedPayroll],
25
+ [Employees::SalariedPayrollMixin]^[Employees::Company],
26
+ [Employees::Company]->[Employees::DefinedContribution],
27
+ [Employees::DefinedContributionMixin]^[Employees::Company],
28
+ [Employees::Company]->[Employees::DefinedBenefit],
29
+ [Employees::DefinedBenefitMixin]^[Employees::Company],
30
+ [Employees::Company]->[Employees::EmployeeType],
31
+ [Employees::EmployeeTypeMixin]^[Employees::Company],
32
+ [Employees::Company]->[Employees::Department],
33
+ [Employees::DepartmentMixin]^[Employees::Company],
34
+ [Employees::HourlyPayroll]->[Employees::Payrole],
35
+ [Employees::PayroleMixin]^[Employees::HourlyPayroll],
36
+ [Employees::SalariedPayroll]->[Employees::Payrole],
37
+ [Employees::PayroleMixin]^[Employees::SalariedPayroll],
38
+ [Employees::DefinedContribution]->[Employees::RetirementPlan],
39
+ [Employees::RetirementPlanMixin]^[Employees::DefinedContribution],
40
+ [Employees::DefinedBenefit]->[Employees::RetirementPlan],
41
+ [Employees::RetirementPlanMixin]^[Employees::DefinedBenefit],
42
+ [Employees::EmployeeType]->[Employees::DefinedContribution],
43
+ [Employees::DefinedContributionMixin]^[Employees::EmployeeType],
44
+ [Employees::EmployeeType]->[Employees::HourlyPayroll],
45
+ [Employees::HourlyPayrollMixin]^[Employees::EmployeeType],
46
+ [Employees::EmployeeType]->[Employees::SalariedPayroll],
47
+ [Employees::SalariedPayrollMixin]^[Employees::EmployeeType],
48
+ [Employees::EmployeeType]->[Employees::DefinedBenefit],
49
+ [Employees::DefinedBenefitMixin]^[Employees::EmployeeType],
50
+ [Employees::Department]->[Employees::Employee],
51
+ [Employees::EmployeeMixin]^[Employees::Department],
52
+ [Employees::Employee]->[Employees::EmployeeType],
53
+ [Employees::EmployeeTypeMixin]^[Employees::Employee]
@@ -0,0 +1,27 @@
1
+ ,
2
+ [Employees::Company{bg:red}],
3
+ [Employees::HourlyPayroll{bg:red}],
4
+ [Employees::Payrole{bg:blue}],
5
+ [Employees::SalariedPayroll{bg:red}],
6
+ [Employees::DefinedContribution{bg:red}],
7
+ [Employees::RetirementPlan{bg:blue}],
8
+ [Employees::DefinedBenefit{bg:red}],
9
+ [Employees::EmployeeType{bg:red}],
10
+ [Employees::Department{bg:red}],
11
+ [Employees::Employee{bg:red}],
12
+ [Employees::Company]->[Employees::HourlyPayroll],
13
+ [Employees::Company]->[Employees::SalariedPayroll],
14
+ [Employees::Company]->[Employees::DefinedContribution],
15
+ [Employees::Company]->[Employees::DefinedBenefit],
16
+ [Employees::Company]->[Employees::EmployeeType],
17
+ [Employees::Company]->[Employees::Department],
18
+ [Employees::HourlyPayroll]->[Employees::Payrole],
19
+ [Employees::SalariedPayroll]->[Employees::Payrole],
20
+ [Employees::DefinedContribution]->[Employees::RetirementPlan],
21
+ [Employees::DefinedBenefit]->[Employees::RetirementPlan],
22
+ [Employees::EmployeeType]->[Employees::DefinedContribution],
23
+ [Employees::EmployeeType]->[Employees::HourlyPayroll],
24
+ [Employees::EmployeeType]->[Employees::SalariedPayroll],
25
+ [Employees::EmployeeType]->[Employees::DefinedBenefit],
26
+ [Employees::Department]->[Employees::Employee],
27
+ [Employees::Employee]->[Employees::EmployeeType]
@@ -0,0 +1,5 @@
1
+
2
+
3
+ g:
4
+ rm -rf repo
5
+ ruby -w hobbies.rb