expressir 1.2.1-x64-mingw32 → 1.2.5-x64-mingw32

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 (68) hide show
  1. checksums.yaml +4 -4
  2. data/.cross_rubies +3 -6
  3. data/.github/workflows/rake.yml +223 -19
  4. data/.github/workflows/release.yml +1 -0
  5. data/.gitignore +7 -1
  6. data/.gitmodules +4 -1
  7. data/.rubocop.yml +13 -4
  8. data/Rakefile +4 -1
  9. data/bin/console +0 -1
  10. data/bin/rspec +3 -3
  11. data/exe/expressir +4 -2
  12. data/exe/format +1 -1
  13. data/exe/format-test +25 -25
  14. data/exe/generate-parser +16 -13
  15. data/expressir.gemspec +13 -11
  16. data/lib/expressir/config.rb +1 -1
  17. data/lib/expressir/express/2.7/express_parser.so +0 -0
  18. data/lib/expressir/express/3.0/express_parser.so +0 -0
  19. data/lib/expressir/express/parser.rb +18 -15
  20. data/lib/expressir/express/visitor.rb +7 -3
  21. data/lib/expressir/model.rb +78 -78
  22. data/lib/expressir/version.rb +1 -1
  23. data/rakelib/antlr4-native.rake +63 -0
  24. data/rakelib/cross-ruby.rake +216 -157
  25. data/spec/acceptance/version_spec.rb +7 -2
  26. data/spec/expressir/express/cache_spec.rb +8 -5
  27. data/spec/expressir/express/formatter_spec.rb +16 -8
  28. data/spec/expressir/express/parser_spec.rb +17 -11
  29. data/spec/expressir/model/model_element_spec.rb +154 -146
  30. metadata +55 -63
  31. data/demo.rb +0 -18
  32. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.exp +0 -9589
  33. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.owl +0 -36619
  34. data/original/examples/ap233/ap233e1_arm_lf_stepmod-2010-11-12.xml +0 -13294
  35. data/original/examples/employment/eclipse/.project +0 -17
  36. data/original/examples/employment/eclipse/Export/Employment.png +0 -0
  37. data/original/examples/employment/eclipse/Express/employment_schema.exp +0 -33
  38. data/original/examples/employment/eclipse/Express/employment_schema.xmi +0 -77
  39. data/original/examples/employment/eclipse/Express/employment_schema.xml +0 -93
  40. data/original/examples/employment/eclipse/Models/Employment.uml +0 -4
  41. data/original/examples/employment/eclipse/Models/Employment.umldi +0 -240
  42. data/original/examples/employment/eclipse/readme.txt +0 -7
  43. data/original/examples/employment/employment_schema.exp +0 -33
  44. data/original/examples/employment/employment_schema.rb +0 -232
  45. data/original/examples/employment/employment_schema.xml +0 -93
  46. data/original/examples/employment/employment_schema___module.rb +0 -46
  47. data/original/examples/employment/employment_schema___p28attr.rb +0 -126
  48. data/original/examples/employment/employment_schema___p28inst.rb +0 -26
  49. data/original/examples/employment/example_employment_data.xml +0 -1
  50. data/original/examples/employment/example_employment_data_copy.xml +0 -1
  51. data/original/examples/employment/example_employment_reader.rb +0 -30
  52. data/original/examples/employment/example_employment_writer.rb +0 -51
  53. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.exp +0 -3710
  54. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.owl +0 -35880
  55. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xmi +0 -15357
  56. data/original/examples/plcs/ap239e1_arm_lf_dexlib_2010-01-06.xml +0 -9468
  57. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.exp +0 -8404
  58. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.owl +0 -43147
  59. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xmi +0 -18341
  60. data/original/examples/plcs/ap239e2_arm_lf_stepmod-2010-01-25.xml +0 -11632
  61. data/original/exp2ruby.rb +0 -525
  62. data/original/expsm.rb +0 -34
  63. data/original/mapping_owl.rb +0 -1018
  64. data/original/mapping_sysml.rb +0 -2281
  65. data/original/mapping_uml2.rb +0 -599
  66. data/original/mapping_uml2_eclipse.rb +0 -433
  67. data/original/reeper.rb +0 -134
  68. data/spec/expressr_spec.rb +0 -5
@@ -1,232 +0,0 @@
1
- require "employment_schema___module"
2
- require "employment_schema___p28inst"
3
- require "employment_schema___p28attr"
4
- module EMP
5
- class Person
6
- include Person___module
7
- @@entity = 'Person'
8
- @@attr___names = 'Names'
9
- @@Person___count = 0
10
- def initialize
11
- @@Person___count += 1
12
- @p28id = 'id-PERSON-' + @@Person___count.to_s
13
- end
14
- def isValid
15
- return case
16
- when !isValidPerson___module : false
17
- else true
18
- end
19
- end
20
- def writeP28 p28file
21
- e___added = p28file.root.add_element('emp:Person', {'id' => @p28id})
22
- if names != nil
23
- a___names = e___added.add_element('Names')
24
- for names___member in names
25
- amember___names = a___names.add_element('ex:string-wrapper')
26
- amember___names.text = names___member
27
- end
28
- end
29
- end
30
- def getP28id
31
- @p28id
32
- end
33
- def putP28id(the_id)
34
- @p28id = the_id
35
- end
36
- def getP28entity
37
- return('emp:' + @@entity)
38
- end
39
- end
40
- class Organization
41
- include Organization___module
42
- @@entity = 'Organization'
43
- @@attr___name = 'Name'
44
- @@Organization___count = 0
45
- def initialize
46
- @@Organization___count += 1
47
- @p28id = 'id-ORGANIZATION-' + @@Organization___count.to_s
48
- end
49
- def isValid
50
- return case
51
- when !isValidOrganization___module : false
52
- else true
53
- end
54
- end
55
- def writeP28 p28file
56
- e___added = p28file.root.add_element('emp:Organization', {'id' => @p28id})
57
- if name != nil
58
- a___name = e___added.add_element('Name')
59
- a___name.text = name
60
- end
61
- end
62
- def getP28id
63
- @p28id
64
- end
65
- def putP28id(the_id)
66
- @p28id = the_id
67
- end
68
- def getP28entity
69
- return('emp:' + @@entity)
70
- end
71
- end
72
- class Personorganizationrelationship
73
- include Personorganizationrelationship___module
74
- @@entity = 'Personorganizationrelationship'
75
- @@attr___the_person = 'The_person'
76
- @@attr___the_organization = 'The_organization'
77
- @@attr___start_date = 'Start_date'
78
- @@attr___end_date = 'End_date'
79
- @@Personorganizationrelationship___count = 0
80
- def initialize
81
- @@Personorganizationrelationship___count += 1
82
- @p28id = 'id-PERSONORGANIZATIONRELATIONSHIP-' + @@Personorganizationrelationship___count.to_s
83
- end
84
- def isValid
85
- return case
86
- when !isValidPersonorganizationrelationship___module : false
87
- else true
88
- end
89
- end
90
- def writeP28 p28file
91
- e___added = p28file.root.add_element('emp:Personorganizationrelationship', {'id' => @p28id})
92
- if the_person != nil
93
- a___the_person = e___added.add_element('The_person')
94
- a___the_person = a___the_person.add_element(the_person.getP28entity)
95
- a___the_person.attributes['ref'] = the_person.getP28id
96
- a___the_person.attributes['xsi:nil'] = 'true'
97
- end
98
- if the_organization != nil
99
- a___the_organization = e___added.add_element('The_organization')
100
- a___the_organization = a___the_organization.add_element(the_organization.getP28entity)
101
- a___the_organization.attributes['ref'] = the_organization.getP28id
102
- a___the_organization.attributes['xsi:nil'] = 'true'
103
- end
104
- if start_date != nil
105
- a___start_date = e___added.add_element('Start_date')
106
- a___start_date.text = start_date
107
- end
108
- if end_date != nil
109
- a___end_date = e___added.add_element('End_date')
110
- a___end_date.text = end_date
111
- end
112
- end
113
- def getP28id
114
- @p28id
115
- end
116
- def putP28id(the_id)
117
- @p28id = the_id
118
- end
119
- def getP28entity
120
- return('emp:' + @@entity)
121
- end
122
- end
123
- class Employment
124
- include Personorganizationrelationship___module
125
- include Employment___module
126
- @@entity = 'Employment'
127
- @@attr___job_title = 'Job_title'
128
- @@attr___ended_by = 'Ended_by'
129
- @@attr___employment_type = 'Employment_type'
130
- @@Employment___count = 0
131
- def initialize
132
- @@Employment___count += 1
133
- @p28id = 'id-EMPLOYMENT-' + @@Employment___count.to_s
134
- end
135
- def isValid
136
- return case
137
- when !isValidEmployment___module : false
138
- when !isValidPersonorganizationrelationship___module : false
139
- else true
140
- end
141
- end
142
- def writeP28 p28file
143
- e___added = p28file.root.add_element('emp:Employment', {'id' => @p28id})
144
- if the_person != nil
145
- a___the_person = e___added.add_element('The_person')
146
- a___the_person = a___the_person.add_element(the_person.getP28entity)
147
- a___the_person.attributes['ref'] = the_person.getP28id
148
- a___the_person.attributes['xsi:nil'] = 'true'
149
- end
150
- if the_organization != nil
151
- a___the_organization = e___added.add_element('The_organization')
152
- a___the_organization = a___the_organization.add_element(the_organization.getP28entity)
153
- a___the_organization.attributes['ref'] = the_organization.getP28id
154
- a___the_organization.attributes['xsi:nil'] = 'true'
155
- end
156
- if start_date != nil
157
- a___start_date = e___added.add_element('Start_date')
158
- a___start_date.text = start_date
159
- end
160
- if end_date != nil
161
- a___end_date = e___added.add_element('End_date')
162
- a___end_date.text = end_date
163
- end
164
- if job_title != nil
165
- a___job_title = e___added.add_element('Job_title')
166
- a___job_title.text = job_title
167
- end
168
- if ended_by != nil
169
- a___ended_by = e___added.add_element('Ended_by')
170
- a___ended_by = a___ended_by.add_element(ended_by.getP28entity)
171
- a___ended_by.attributes['ref'] = ended_by.getP28id
172
- a___ended_by.attributes['xsi:nil'] = 'true'
173
- end
174
- if employment_type != nil
175
- a___employment_type = e___added.add_element('Employment_type')
176
- a___employment_type.text = employment_type
177
- end
178
- end
179
- def getP28id
180
- @p28id
181
- end
182
- def putP28id(the_id)
183
- @p28id = the_id
184
- end
185
- def getP28entity
186
- return('emp:' + @@entity)
187
- end
188
- end
189
- class Model___data
190
- attr_reader :model_elements, :model_name, :namespace, :originating_system, :preprocessor_version
191
- attr_writer :model_elements, :model_name, :namespace, :originating_system, :preprocessor_version
192
- def initialize
193
- @model_elements = []
194
- @namespace = 'emp'
195
- end
196
- def readP28e2 p28doc
197
- puts 'Reading P28E2 XML'
198
- read_P28_entity_instances(p28doc,self)
199
- read_P28_attribute_values(p28doc,self)
200
- end
201
- require 'time'
202
- def writeP28e2 p28file
203
- puts 'Writing P28E2 with XML namespace = ' + namespace
204
- @p28file = p28file
205
- p28file << XMLDecl.new
206
- the_ns = 'xmlns:' + namespace
207
- the_uos = namespace + ':uos'
208
- uos = p28file.add_element(the_uos, {the_ns => 'urn:iso10303-28:schema/Employment_schema'})
209
- uos.add_namespace('xsi','http://www.w3.org/2001/XMLSchema-instance')
210
- uos.add_namespace('ex','urn:iso:std:iso:10303:28:ed-2:2005:schema:common')
211
- uos.add_namespace('exp','urn:iso:std:iso:10303:28:ed-2:2005:schema:common')
212
- uos.add_attribute('xsi:schemaLocation','urn:iso10303-28:schema/Employment_schema Employment_schema.xsd')
213
- header = p28file.root.add_element('exp:header')
214
- t = header.add_element('time_stamp')
215
- t.text = Time.now.xmlschema()
216
- if self.originating_system != nil
217
- t = header.add_element('preprocessor_version')
218
- t.text = self.preprocessor_version
219
- end
220
- if self.originating_system != nil
221
- t = header.add_element('originating_system')
222
- t.text = self.originating_system
223
- end
224
- i = 1
225
- for e in model_elements
226
- puts i
227
- e.writeP28(p28file)
228
- i = i + 1
229
- end
230
- end
231
- end
232
- end
@@ -1,93 +0,0 @@
1
- <?xml version="1.0"?>
2
-
3
- <express
4
- language_version="2"
5
- rcs.date="$Date: $"
6
- rcs.revision="$Revision: $">
7
-
8
- <application
9
- name=" Eurostep EXPRESS Parser (Eep!)"
10
- owner="Eurostep Limited"
11
- url="www.eurostep.com"
12
- version="1, 4, 36, 40"
13
- source="employment_schema.exp"/>
14
-
15
- <schema name="employment_schema">
16
- <type name="date">
17
- <builtintype type="STRING"
18
- />
19
- </type>
20
-
21
- <type name="po">
22
- <select
23
- selectitems="Person Organization"
24
- />
25
- </type>
26
-
27
- <type name="contract_type">
28
- <enumeration
29
- items="contract atwill contractor"
30
- />
31
- </type>
32
-
33
- <entity name="Person"
34
- >
35
- <explicit
36
- name="names">
37
- <aggregate type="LIST"
38
- />
39
- <builtintype type="STRING"
40
- />
41
- </explicit>
42
- </entity>
43
-
44
- <entity name="Organization"
45
- >
46
- <explicit
47
- name="name">
48
- <builtintype type="STRING"
49
- />
50
- </explicit>
51
- </entity>
52
-
53
- <entity name="PersonOrganizationRelationship"
54
- >
55
- <explicit
56
- name="the_person">
57
- <typename name="Person"/>
58
- </explicit>
59
- <explicit
60
- name="the_organization">
61
- <typename name="Organization"/>
62
- </explicit>
63
- <explicit
64
- name="start_date">
65
- <typename name="date"/>
66
- </explicit>
67
- <explicit
68
- name="end_date">
69
- <typename name="date"/>
70
- </explicit>
71
- </entity>
72
-
73
- <entity name="Employment"
74
- supertypes="PersonOrganizationRelationship"
75
- >
76
- <explicit
77
- name="job_title">
78
- <builtintype type="STRING"
79
- />
80
- </explicit>
81
- <explicit
82
- name="ended_by">
83
- <typename name="po"/>
84
- </explicit>
85
- <explicit
86
- name="employment_type">
87
- <typename name="contract_type"/>
88
- </explicit>
89
- </entity>
90
-
91
- </schema>
92
-
93
- </express>
@@ -1,46 +0,0 @@
1
- module Person___module
2
- attr_accessor :names
3
- def isValidPerson___module
4
- return case
5
- when names == nil : false
6
- else true
7
- end
8
- end
9
- end
10
- module Organization___module
11
- attr_accessor :name
12
- def isValidOrganization___module
13
- return case
14
- when name == nil : false
15
- else true
16
- end
17
- end
18
- end
19
- module Personorganizationrelationship___module
20
- attr_accessor :the_person
21
- attr_accessor :the_organization
22
- attr_accessor :start_date
23
- attr_accessor :end_date
24
- def isValidPersonorganizationrelationship___module
25
- return case
26
- when the_person == nil : false
27
- when the_organization == nil : false
28
- when start_date == nil : false
29
- when end_date == nil : false
30
- else true
31
- end
32
- end
33
- end
34
- module Employment___module
35
- attr_accessor :job_title
36
- attr_accessor :ended_by
37
- attr_accessor :employment_type
38
- def isValidEmployment___module
39
- return case
40
- when job_title == nil : false
41
- when ended_by == nil : false
42
- when employment_type == nil : false
43
- else true
44
- end
45
- end
46
- end
@@ -1,126 +0,0 @@
1
- def read_P28_attribute_values(p28doc,m)
2
- uos = p28doc.root
3
- for entity in uos.elements.to_a()
4
- id = entity.attribute('id')
5
- i = 0
6
- if entity.name != 'header'
7
- while i != -1
8
- tempid = m.model_elements[i].getP28id
9
- if tempid == id.to_s
10
- r = m.model_elements[i]
11
- i = -2
12
- end
13
- i = i + 1
14
- end
15
- end
16
- if entity.name == 'Person'
17
- for child in entity.elements
18
- if child.name == 'Names'
19
- memlist = []
20
- for member in child.elements
21
- memlist.push member.text()
22
- end
23
- r.names= memlist
24
- end
25
- end
26
- end
27
- if entity.name == 'Organization'
28
- for child in entity.elements
29
- if child.name == 'Name'
30
- r.name= child.text()
31
- end
32
- end
33
- end
34
- if entity.name == 'PersonOrganizationRelationship'
35
- for child in entity.elements
36
- if child.name == 'The_person'
37
- ref = child.elements[1].attribute('ref')
38
- i = 0
39
- while i != -1
40
- tempid = m.model_elements[i].getP28id.to_s
41
- if tempid == ref.to_s
42
- p = m.model_elements[i]
43
- i = -2
44
- end
45
- i = i + 1
46
- end
47
- r.the_person= p
48
- end
49
- if child.name == 'The_organization'
50
- ref = child.elements[1].attribute('ref')
51
- i = 0
52
- while i != -1
53
- tempid = m.model_elements[i].getP28id.to_s
54
- if tempid == ref.to_s
55
- p = m.model_elements[i]
56
- i = -2
57
- end
58
- i = i + 1
59
- end
60
- r.the_organization= p
61
- end
62
- if child.name == 'Start_date'
63
- r.start_date= child.text()
64
- end
65
- if child.name == 'End_date'
66
- r.end_date= child.text()
67
- end
68
- end
69
- end
70
- if entity.name == 'Employment'
71
- for child in entity.elements
72
- if child.name == 'The_person'
73
- ref = child.elements[1].attribute('ref')
74
- i = 0
75
- while i != -1
76
- tempid = m.model_elements[i].getP28id.to_s
77
- if tempid == ref.to_s
78
- p = m.model_elements[i]
79
- i = -2
80
- end
81
- i = i + 1
82
- end
83
- r.the_person= p
84
- end
85
- if child.name == 'The_organization'
86
- ref = child.elements[1].attribute('ref')
87
- i = 0
88
- while i != -1
89
- tempid = m.model_elements[i].getP28id.to_s
90
- if tempid == ref.to_s
91
- p = m.model_elements[i]
92
- i = -2
93
- end
94
- i = i + 1
95
- end
96
- r.the_organization= p
97
- end
98
- if child.name == 'Start_date'
99
- r.start_date= child.text()
100
- end
101
- if child.name == 'End_date'
102
- r.end_date= child.text()
103
- end
104
- if child.name == 'Job_title'
105
- r.job_title= child.text()
106
- end
107
- if child.name == 'Ended_by'
108
- ref = child.elements[1].attribute('ref')
109
- i = 0
110
- while i != -1
111
- tempid = m.model_elements[i].getP28id.to_s
112
- if tempid == ref.to_s
113
- p = m.model_elements[i]
114
- i = -2
115
- end
116
- i = i + 1
117
- end
118
- r.ended_by= p
119
- end
120
- if child.name == 'Employment_type'
121
- r.employment_type= child.text()
122
- end
123
- end
124
- end
125
- end
126
- end
@@ -1,26 +0,0 @@
1
- def read_P28_entity_instances(p28doc,m)
2
- uos = p28doc.root
3
- for entity in uos.elements.to_a()
4
- id = entity.attribute('id')
5
- if entity.name == 'Person'
6
- r = EMP::Person.new
7
- m.model_elements.push r
8
- r.putP28id(id.to_s)
9
- end
10
- if entity.name == 'Organization'
11
- r = EMP::Organization.new
12
- m.model_elements.push r
13
- r.putP28id(id.to_s)
14
- end
15
- if entity.name == 'PersonOrganizationRelationship'
16
- r = EMP::PersonOrganizationRelationship.new
17
- m.model_elements.push r
18
- r.putP28id(id.to_s)
19
- end
20
- if entity.name == 'Employment'
21
- r = EMP::Employment.new
22
- m.model_elements.push r
23
- r.putP28id(id.to_s)
24
- end
25
- end
26
- end
@@ -1 +0,0 @@
1
- <?xml version='1.0'?><emp:uos xsi:schemaLocation='urn:iso10303-28:schema/Employment_schema Employment_schema.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:exp='urn:iso:std:iso:10303:28:ed-2:2005:schema:common' xmlns:ex='urn:iso:std:iso:10303:28:ed-2:2005:schema:common' xmlns:emp='urn:iso10303-28:schema/Employment_schema'><exp:header><time_stamp>2009-09-10T13:43:19+01:00</time_stamp></exp:header><emp:Organization id='id-ORGANIZATION-1'><Name>Acme Plumbing</Name></emp:Organization><emp:Employment id='id-EMPLOYMENT-1'><The_person><emp:Person xsi:nil='true' ref='id-PERSON-1'/></The_person><The_organization><emp:Organization xsi:nil='true' ref='id-ORGANIZATION-1'/></The_organization><Start_date>2008-04-01</Start_date><End_date>2008-06-01</End_date><Job_title>Apprentice</Job_title><Ended_by><emp:Person xsi:nil='true' ref='id-PERSON-1'/></Ended_by><Employment_type>atwill</Employment_type></emp:Employment><emp:Person id='id-PERSON-1'><Names><ex:string-wrapper>Joe</ex:string-wrapper><ex:string-wrapper>Plumber</ex:string-wrapper></Names></emp:Person></emp:uos>
@@ -1 +0,0 @@
1
- <?xml version='1.0'?><emp:uos xsi:schemaLocation='urn:iso10303-28:schema/Employment_schema Employment_schema.xsd' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:exp='urn:iso:std:iso:10303:28:ed-2:2005:schema:common' xmlns:ex='urn:iso:std:iso:10303:28:ed-2:2005:schema:common' xmlns:emp='urn:iso10303-28:schema/Employment_schema'><exp:header><time_stamp>2009-09-10T12:40:31+01:00</time_stamp></exp:header><emp:Organization id='id-ORGANIZATION-1'><Name>Acme Plumbing</Name></emp:Organization><emp:Employment id='id-EMPLOYMENT-1'><The_person><emp:Person xsi:nil='true' ref='id-PERSON-1'/></The_person><The_organization><emp:Organization xsi:nil='true' ref='id-ORGANIZATION-1'/></The_organization><Start_date>2008-04-01</Start_date><End_date>2008-06-01</End_date><Job_title>Apprentice</Job_title><Ended_by><emp:Person xsi:nil='true' ref='id-PERSON-1'/></Ended_by><Employment_type>atwill</Employment_type></emp:Employment><emp:Person id='id-PERSON-1'><Names><ex:string-wrapper>Joe</ex:string-wrapper><ex:string-wrapper>Plumber</ex:string-wrapper></Names></emp:Person></emp:uos>
@@ -1,30 +0,0 @@
1
- require 'employment_schema'
2
- require 'rexml/document'
3
- include REXML
4
- include EMP
5
- $xnspre = "emp"
6
- ##
7
- infile = File.new("example_employment_data.xml","r")
8
- doc = REXML::Document.new infile
9
- ## create a model container for the data instances
10
- m = EMP::Model___data.new
11
- ##
12
- ## Set the XML Namespace for the P28 E2 file
13
- m.namespace = $xnspre
14
- ## Give model a name if you want
15
- m.model_name = "Test dataset 1"
16
- m.model_elements = []
17
- m.readP28e2(doc)
18
- if m.model_elements.size != 0
19
- puts "Copied " + m.model_elements.size.to_s
20
- for e in m.model_elements
21
- puts "p28id = " + e.getP28id.to_s
22
- end
23
- ##
24
- ## Set up the XML file and write all data in the model container to the file
25
- datafile = File.new("example_employment_data_copy.xml","w")
26
- p28file = REXML::Document.new
27
- m.writeP28e2 p28file
28
- datafile.puts p28file
29
- datafile.close
30
- end
@@ -1,51 +0,0 @@
1
- require 'employment_schema'
2
- require 'rexml/document'
3
- include REXML
4
- include EMP
5
- ##
6
- ## create a model container for the data instances
7
- ##
8
- mydata = EMP::Model___data.new
9
- mydata.model_elements = []
10
- ##
11
- ## create an organization
12
- ##
13
- org1 = EMP::Organization.new
14
- ##
15
- ## check that all mandatory attrs are set
16
- ##
17
- puts 'Without name, org1 isValid = ' + org1.isValid.to_s
18
- org1.name = 'Acme Plumbing'
19
- ##
20
- ## check again that all mandatory attrs are set
21
- ##
22
- puts 'With name, org1 isValid = ' + org1.isValid.to_s
23
-
24
- per1 = EMP::Person.new
25
- per1.names = []
26
- per1.names.push 'Joe'
27
- per1.names.push 'Plumber'
28
-
29
- emp1 = EMP::Employment.new
30
- emp1.the_person = per1
31
- emp1.the_organization = org1
32
- emp1.start_date = '2008-04-01'
33
- emp1.end_date = '2008-06-01'
34
- emp1.job_title = 'Apprentice'
35
- emp1.ended_by = per1
36
- emp1.employment_type = 'atwill'
37
-
38
- ##
39
- ## put all instances in the model container, this is what gets written to XML
40
- ##
41
- mydata.model_elements.push org1
42
- mydata.model_elements.push emp1
43
- mydata.model_elements.push per1
44
- ##
45
- ## Set up the XML file and write all data in the model container to the file
46
- ##
47
- datafile = File.new("example_employment_data.xml","w")
48
- p28file = REXML::Document.new
49
- mydata.writeP28e2 p28file
50
- datafile.puts p28file
51
- datafile.close