eadcodec 0.0.3 → 0.0.4
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/Rakefile +2 -2
- data/lib/EAD.rb +93 -4
- data/lib/EADAcqInfo.rb +13 -0
- data/lib/EADAltFormAvail.rb +13 -0
- data/lib/EADAppraisal.rb +12 -0
- data/lib/EADArrangement.rb +12 -0
- data/lib/EADChronList.rb +27 -0
- data/lib/EADContainer.rb +15 -0
- data/lib/EADControlAccess.rb +12 -0
- data/lib/EADCustodHist.rb +12 -0
- data/lib/EADDimensions.rb +15 -0
- data/lib/EADDocument.rb +11 -3
- data/lib/EADEvent.rb +11 -0
- data/lib/EADExtent.rb +15 -0
- data/lib/EADFilePlan.rb +12 -0
- data/lib/EADGeogName.rb +15 -0
- data/lib/EADLabel.rb +11 -0
- data/lib/EADLevel.rb +1 -0
- data/lib/EADList.rb +36 -0
- data/lib/EADMaterialSpec.rb +14 -0
- data/lib/EADName.rb +17 -0
- data/lib/EADOtherFindAid.rb +12 -0
- data/lib/EADPhysFacet.rb +17 -0
- data/lib/EADProcessInfo.rb +13 -0
- data/lib/EADRepository.rb +13 -0
- data/lib/EADSubordinates.rb +23 -23
- data/test/TestPartialExport.rb +18 -10
- metadata +26 -6
- data/lib/EADStreamParser.rb +0 -40
- data/test/TestEADStreamParser.rb +0 -109
data/Rakefile
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
PKG_NAME = 'eadcodec'
|
2
|
-
PKG_VERSION = '0.0.
|
2
|
+
PKG_VERSION = '0.0.4'
|
3
3
|
|
4
4
|
require 'rake'
|
5
5
|
require 'rake/testtask'
|
@@ -30,7 +30,7 @@ spec = Gem::Specification.new do |s|
|
|
30
30
|
s.author = 'Pedro Côrte-Real'
|
31
31
|
s.email = 'pedrocr@gmail.com'
|
32
32
|
s.requirements << 'xmlcodec'
|
33
|
-
s.add_dependency('xmlcodec', '>= 0.0.
|
33
|
+
s.add_dependency('xmlcodec', '>= 0.0.4')
|
34
34
|
s.require_path = 'lib'
|
35
35
|
s.autorequire = 'rake'
|
36
36
|
s.files = PKG_FILES
|
data/lib/EAD.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require "rexml/document"
|
2
2
|
require "xmlcodec"
|
3
|
-
include REXML
|
4
3
|
|
5
4
|
# This module includes all the support for EAD import/export. The main class to
|
6
5
|
# use is EADDocument that is a subclass of XMLUtils::XMLElement. All elements
|
@@ -46,9 +45,6 @@ module EAD
|
|
46
45
|
# Create a bunch of classes for simple elements with just values
|
47
46
|
# Most of these actually can have children so they should be promoted to
|
48
47
|
# actual classes.
|
49
|
-
sclass "EADOrigination", "origination"
|
50
|
-
sclass "EADUnitTitle", "unittitle"
|
51
|
-
sclass "EADUnitId", "unitid"
|
52
48
|
sclass "EADAbstract", "abstract"
|
53
49
|
sclass "EADPhysDesc", "physdesc"
|
54
50
|
sclass "EADPhysLoc", "physloc"
|
@@ -68,6 +64,77 @@ module EAD
|
|
68
64
|
sclass "EADRef", "ref"
|
69
65
|
sclass "EADLinkGrp", "linkgrp"
|
70
66
|
sclass "EADTitle", "title"
|
67
|
+
|
68
|
+
class EADOrigination < EADElement
|
69
|
+
elname "origination"
|
70
|
+
|
71
|
+
xmlattr :altrender
|
72
|
+
xmlattr :audience
|
73
|
+
xmlattr :encodinganalog
|
74
|
+
xmlattr :id
|
75
|
+
xmlattr :label
|
76
|
+
|
77
|
+
xmlsubelements
|
78
|
+
|
79
|
+
def initialize(string=nil)
|
80
|
+
if string
|
81
|
+
self.subelements << string
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def value
|
86
|
+
self.subelements[0].to_s
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
class EADUnitTitle < EADElement
|
91
|
+
elname "unittitle"
|
92
|
+
|
93
|
+
xmlattr :altrender
|
94
|
+
xmlattr :audience
|
95
|
+
xmlattr :encodinganalog
|
96
|
+
xmlattr :id
|
97
|
+
xmlattr :label
|
98
|
+
xmlattr :type
|
99
|
+
|
100
|
+
xmlsubelements
|
101
|
+
|
102
|
+
def initialize(string=nil)
|
103
|
+
if string
|
104
|
+
self.subelements << string
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
def value
|
109
|
+
self.subelements[0].to_s
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
class EADUnitId < EADElement
|
114
|
+
elname "unitid"
|
115
|
+
|
116
|
+
xmlattr :altrender
|
117
|
+
xmlattr :audience
|
118
|
+
xmlattr :countrycode
|
119
|
+
xmlattr :encodinganalog
|
120
|
+
xmlattr :id
|
121
|
+
xmlattr :identifier
|
122
|
+
xmlattr :label
|
123
|
+
xmlattr :repositorycode
|
124
|
+
xmlattr :type
|
125
|
+
|
126
|
+
xmlsubelements
|
127
|
+
|
128
|
+
def initialize(string=nil)
|
129
|
+
if string
|
130
|
+
self.subelements << string
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def value
|
135
|
+
self.subelements[0].to_s
|
136
|
+
end
|
137
|
+
end
|
71
138
|
|
72
139
|
# The class for the 'head' element. For convenience it can be initialized
|
73
140
|
# with a string value that is used as the first subelement.
|
@@ -130,6 +197,28 @@ require "EADHeader"
|
|
130
197
|
require "EADBiogHist"
|
131
198
|
require "EADDocument"
|
132
199
|
require "EADLang"
|
200
|
+
require 'EADExtent'
|
201
|
+
require 'EADGeogName'
|
202
|
+
require 'EADRepository'
|
203
|
+
require 'EADAcqInfo'
|
204
|
+
require 'EADChronList'
|
205
|
+
require 'EADEvent'
|
206
|
+
require 'EADControlAccess'
|
207
|
+
require 'EADList'
|
208
|
+
require 'EADLabel'
|
209
|
+
require 'EADCustodHist'
|
210
|
+
require 'EADFilePlan'
|
211
|
+
require 'EADProcessInfo'
|
212
|
+
require 'EADName'
|
213
|
+
require 'EADDimensions'
|
214
|
+
require 'EADArrangement'
|
215
|
+
require 'EADContainer'
|
216
|
+
require 'EADAltFormAvail'
|
217
|
+
require 'EADPhysFacet'
|
218
|
+
require 'EADMaterialSpec'
|
219
|
+
require 'EADAppraisal'
|
220
|
+
require 'EADOtherFindAid'
|
221
|
+
|
133
222
|
|
134
223
|
module EAD
|
135
224
|
def self.c_levels
|
data/lib/EADAcqInfo.rb
ADDED
data/lib/EADAppraisal.rb
ADDED
data/lib/EADChronList.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
module EAD
|
2
|
+
class EADChronList < EADElement
|
3
|
+
elname "chronlist"
|
4
|
+
|
5
|
+
xmlattr :altrender
|
6
|
+
xmlattr :audience
|
7
|
+
xmlattr :encodinganalog
|
8
|
+
xmlattr :id
|
9
|
+
|
10
|
+
xmlsubelements
|
11
|
+
end
|
12
|
+
|
13
|
+
class EADChronItem < EADElement
|
14
|
+
elname "chronitem"
|
15
|
+
|
16
|
+
xmlattr :altrender
|
17
|
+
xmlattr :audience
|
18
|
+
xmlattr :encodinganalog
|
19
|
+
xmlattr :id
|
20
|
+
|
21
|
+
xmlsubel :date
|
22
|
+
xmlsubel :event
|
23
|
+
xmlsubel :eventgrp
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
|
data/lib/EADContainer.rb
ADDED
data/lib/EADDocument.rb
CHANGED
@@ -5,7 +5,15 @@ module EAD
|
|
5
5
|
class EADArchDesc < EADElement
|
6
6
|
elname "archdesc"
|
7
7
|
|
8
|
+
xmlattr :altrender
|
9
|
+
xmlattr :audience
|
10
|
+
xmlattr :encodinganalog
|
11
|
+
xmlattr :id
|
8
12
|
xmlattr :level
|
13
|
+
xmlattr :otherlevel
|
14
|
+
xmlattr :relatedencoding
|
15
|
+
xmlattr :type
|
16
|
+
|
9
17
|
xmlsubel :did
|
10
18
|
xmlsubel :bioghist
|
11
19
|
xmlsubel :scopecontent
|
@@ -76,9 +84,9 @@ module EAD
|
|
76
84
|
end
|
77
85
|
|
78
86
|
def export(filename)
|
79
|
-
doc = Document.new
|
80
|
-
doc << XMLDecl.new("1.0", "UTF-8")
|
81
|
-
doc << DocType.new("ead SYSTEM", '"file:///home/pedrocr/ead.dtd"')
|
87
|
+
doc = REXML::Document.new
|
88
|
+
doc << REXML::XMLDecl.new("1.0", "UTF-8")
|
89
|
+
doc << REXML::DocType.new("ead SYSTEM", '"file:///home/pedrocr/ead.dtd"')
|
82
90
|
create_xml(doc)
|
83
91
|
output = File.open(filename, "w")
|
84
92
|
|
data/lib/EADEvent.rb
ADDED
data/lib/EADExtent.rb
ADDED
data/lib/EADFilePlan.rb
ADDED
data/lib/EADGeogName.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
module EAD
|
2
|
+
class EADGeogName < EADElement
|
3
|
+
elname 'geogname'
|
4
|
+
|
5
|
+
xmlattr :altrender
|
6
|
+
xmlattr :audience
|
7
|
+
xmlattr :authfilenumber
|
8
|
+
xmlattr :encondinganalog
|
9
|
+
xmlattr :id
|
10
|
+
xmlattr :normal
|
11
|
+
xmlattr :role
|
12
|
+
xmlattr :rules
|
13
|
+
xmlattr :source
|
14
|
+
end
|
15
|
+
end
|
data/lib/EADLabel.rb
ADDED
data/lib/EADLevel.rb
CHANGED
data/lib/EADList.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
module EAD
|
2
|
+
class EADList < EADElement
|
3
|
+
elname "list"
|
4
|
+
|
5
|
+
xmlattr :altrender
|
6
|
+
xmlattr :audience
|
7
|
+
xmlattr :continuation
|
8
|
+
xmlattr :id
|
9
|
+
xmlattr :mark
|
10
|
+
xmlattr :numeration
|
11
|
+
xmlattr :type
|
12
|
+
|
13
|
+
xmlsubelements
|
14
|
+
end
|
15
|
+
|
16
|
+
class EADDefItem < EADElement
|
17
|
+
elname "defitem"
|
18
|
+
|
19
|
+
xmlattr :altrender
|
20
|
+
xmlattr :audience
|
21
|
+
xmlattr :id
|
22
|
+
|
23
|
+
xmlsubel :label
|
24
|
+
xmlsubel :item
|
25
|
+
end
|
26
|
+
|
27
|
+
class EADItem < EADElement
|
28
|
+
elname "item"
|
29
|
+
|
30
|
+
xmlattr :altrender
|
31
|
+
xmlattr :audience
|
32
|
+
xmlattr :id
|
33
|
+
|
34
|
+
xmlsubelements
|
35
|
+
end
|
36
|
+
end
|
data/lib/EADName.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module EAD
|
2
|
+
class EADName < EADElement
|
3
|
+
elname "name"
|
4
|
+
|
5
|
+
xmlattr :altrender
|
6
|
+
xmlattr :audience
|
7
|
+
xmlattr :authfilenumber
|
8
|
+
xmlattr :encodinganalog
|
9
|
+
xmlattr :id
|
10
|
+
xmlattr :normal
|
11
|
+
xmlattr :role
|
12
|
+
xmlattr :rules
|
13
|
+
xmlattr :source
|
14
|
+
|
15
|
+
xmlsubelements
|
16
|
+
end
|
17
|
+
end
|
data/lib/EADPhysFacet.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module EAD
|
2
|
+
class EADPhysFacet < EADElement
|
3
|
+
elname "physfacet"
|
4
|
+
|
5
|
+
xmlattr :altrender
|
6
|
+
xmlattr :audience
|
7
|
+
xmlattr :encodinganalog
|
8
|
+
xmlattr :id
|
9
|
+
xmlattr :label
|
10
|
+
xmlattr :rules
|
11
|
+
xmlattr :source
|
12
|
+
xmlattr :type
|
13
|
+
xmlattr :unit
|
14
|
+
|
15
|
+
xmlsubelements
|
16
|
+
end
|
17
|
+
end
|
data/lib/EADSubordinates.rb
CHANGED
@@ -1,29 +1,29 @@
|
|
1
1
|
require "EAD.rb"
|
2
2
|
|
3
3
|
module EAD
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
4
|
+
class EADSubordinates < EADElement
|
5
|
+
elname "dsc"
|
6
|
+
|
7
|
+
include EADLevels
|
8
|
+
|
9
|
+
xmlattr :altrender
|
10
|
+
xmlattr :audience
|
11
|
+
xmlattr :encondinganalog
|
12
|
+
xmlattr :id
|
13
|
+
xmlattr :othertype
|
14
|
+
xmlattr :tpattern
|
15
|
+
xmlattr :type
|
16
|
+
|
17
|
+
xmlsubel :head
|
18
|
+
xmlsubel_mult :p
|
19
|
+
xmlsubel_mult :c
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
def description_level
|
22
|
+
0
|
23
|
+
end
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
def unnumbered?
|
26
|
+
false
|
27
|
+
end
|
28
|
+
end
|
29
29
|
end
|
data/test/TestPartialExport.rb
CHANGED
@@ -24,21 +24,27 @@ class TestPartialExport < TestEAD
|
|
24
24
|
c01.did = EAD::EADDescription.new
|
25
25
|
c01.did.head = "abc"
|
26
26
|
c01.did.unitid = "teste"
|
27
|
+
c01.did.unittitle = "teste"
|
27
28
|
|
28
29
|
dsc.c << c01
|
29
|
-
c01.
|
30
|
+
c01.start_partial_export(file)
|
30
31
|
|
31
|
-
|
32
|
-
|
33
|
-
c01.
|
34
|
-
|
32
|
+
dsc = EAD::EADSubordinates.new
|
33
|
+
dsc.type = @type
|
34
|
+
c01.dsc << dsc
|
35
|
+
|
36
|
+
c02 = EAD::EADLevel.new
|
37
|
+
c02.did = EAD::EADDescription.new
|
38
|
+
c02.did.head = "abc"
|
39
|
+
c02.did.unitid = "teste"
|
40
|
+
c02.did.unittitle = "teste"
|
35
41
|
sc = EAD::EADScopeContent.new
|
36
42
|
sc.p << EAD::EADP.new('value1')
|
37
43
|
sc.p << EAD::EADP.new('value2')
|
38
|
-
|
44
|
+
c02.scopecontent = sc
|
39
45
|
|
40
|
-
dsc.c <<
|
41
|
-
|
46
|
+
dsc.c << c02
|
47
|
+
c02.start_partial_export(file)
|
42
48
|
|
43
49
|
@ead.end_partial_export(file)
|
44
50
|
|
@@ -47,7 +53,9 @@ class TestPartialExport < TestEAD
|
|
47
53
|
validate_dtd
|
48
54
|
compare_xpath("fonds", "/ead/archdesc/@level")
|
49
55
|
compare_xpath(@type, "/ead/archdesc/dsc/@type")
|
50
|
-
element_exists("/ead/archdesc/dsc/c01", "
|
51
|
-
element_exists("/ead/archdesc/dsc/c01/did", "
|
56
|
+
element_exists("/ead/archdesc/dsc/c01", "the first level was not added")
|
57
|
+
element_exists("/ead/archdesc/dsc/c01/did", "the first level description was not added")
|
58
|
+
element_exists("/ead/archdesc/dsc/c01/dsc/c01", "the second level was not added")
|
59
|
+
element_exists("/ead/archdesc/dsc/c01/dsc/c01/did", "the second level description was not added")
|
52
60
|
end
|
53
61
|
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.
|
2
|
+
rubygems_version: 0.9.0
|
3
3
|
specification_version: 1
|
4
4
|
name: eadcodec
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2006-
|
6
|
+
version: 0.0.4
|
7
|
+
date: 2006-07-06 00:00:00 +01:00
|
8
8
|
summary: Importer/Exporter for the EAD XML format
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -25,6 +25,7 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
|
|
25
25
|
platform: ruby
|
26
26
|
signing_key:
|
27
27
|
cert_chain:
|
28
|
+
post_install_message:
|
28
29
|
authors:
|
29
30
|
- "Pedro C\xC3\xB4rte-Real"
|
30
31
|
files:
|
@@ -36,7 +37,6 @@ files:
|
|
36
37
|
- lib/EADPhysTech.rb
|
37
38
|
- lib/EADBiogHist.rb
|
38
39
|
- lib/EADHeader.rb
|
39
|
-
- lib/EADStreamParser.rb
|
40
40
|
- lib/EADSubtitle.rb
|
41
41
|
- lib/EADDate.rb
|
42
42
|
- lib/EADDocument.rb
|
@@ -45,6 +45,27 @@ files:
|
|
45
45
|
- lib/eadcodec.rb
|
46
46
|
- lib/EADSubordinates.rb
|
47
47
|
- lib/EADLang.rb
|
48
|
+
- lib/EADExtent.rb
|
49
|
+
- lib/EADGeogName.rb
|
50
|
+
- lib/EADRepository.rb
|
51
|
+
- lib/EADAcqInfo.rb
|
52
|
+
- lib/EADChronList.rb
|
53
|
+
- lib/EADEvent.rb
|
54
|
+
- lib/EADControlAccess.rb
|
55
|
+
- lib/EADList.rb
|
56
|
+
- lib/EADLabel.rb
|
57
|
+
- lib/EADCustodHist.rb
|
58
|
+
- lib/EADFilePlan.rb
|
59
|
+
- lib/EADProcessInfo.rb
|
60
|
+
- lib/EADName.rb
|
61
|
+
- lib/EADDimensions.rb
|
62
|
+
- lib/EADArrangement.rb
|
63
|
+
- lib/EADContainer.rb
|
64
|
+
- lib/EADAltFormAvail.rb
|
65
|
+
- lib/EADPhysFacet.rb
|
66
|
+
- lib/EADMaterialSpec.rb
|
67
|
+
- lib/EADAppraisal.rb
|
68
|
+
- lib/EADOtherFindAid.rb
|
48
69
|
- test/TestXMLStreamObjectParser.rb
|
49
70
|
- test/TestEADDescription.rb
|
50
71
|
- test/TestEADScopeContent.rb
|
@@ -52,7 +73,6 @@ files:
|
|
52
73
|
- test/TestEADNote.rb
|
53
74
|
- test/TestEADPhysTech.rb
|
54
75
|
- test/TestEADLevel.rb
|
55
|
-
- test/TestEADStreamParser.rb
|
56
76
|
- test/TestEADSubtitle.rb
|
57
77
|
- test/TestEADDocument.rb
|
58
78
|
- test/TestEAD.rb
|
@@ -87,5 +107,5 @@ dependencies:
|
|
87
107
|
requirements:
|
88
108
|
- - ">="
|
89
109
|
- !ruby/object:Gem::Version
|
90
|
-
version: 0.0.
|
110
|
+
version: 0.0.4
|
91
111
|
version:
|
data/lib/EADStreamParser.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require "XMLStreamParser"
|
2
|
-
require "rexml/document"
|
3
|
-
require "EAD"
|
4
|
-
|
5
|
-
module EAD
|
6
|
-
# This is a stream parser that will output EAD element objects. To use it
|
7
|
-
# all you have to do is create a listener that responds to methods called
|
8
|
-
# el_<eadelementname> with one argument. The argument passed will be the
|
9
|
-
# object with the content of the EAD element.
|
10
|
-
#
|
11
|
-
# The actual stream parsing is done with XMLUtils::XMLStreamParser.
|
12
|
-
class EADStreamParser
|
13
|
-
def initialize(listener=nil)
|
14
|
-
@listener = listener
|
15
|
-
end
|
16
|
-
|
17
|
-
# Parse the text of the EAD file. This can be any IO capable object, like a
|
18
|
-
# string or an open file.
|
19
|
-
def parse(text)
|
20
|
-
parser = XMLUtils::XMLStreamParser.new(self)
|
21
|
-
parser.parse(text)
|
22
|
-
end
|
23
|
-
|
24
|
-
# This is the element method that is called by XMLStreamParser everytime
|
25
|
-
# a XML element is finished.
|
26
|
-
def element(el) #:nodoc:
|
27
|
-
method_sym = ("el_"+el.name).to_sym
|
28
|
-
if @listener.respond_to?(method_sym)
|
29
|
-
cl = XMLCodec::XMLElement.get_element_class(el.name.to_sym)
|
30
|
-
eadelement = cl.import_xml_text(el.content)
|
31
|
-
eadelement.element_id = el.element_id
|
32
|
-
eadelement.parent_id = el.parent_id
|
33
|
-
eadelement.__xml_text = el.content
|
34
|
-
|
35
|
-
@listener.send(method_sym, eadelement)
|
36
|
-
el.consume
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
data/test/TestEADStreamParser.rb
DELETED
@@ -1,109 +0,0 @@
|
|
1
|
-
require "TestEAD"
|
2
|
-
require "EADStreamParser"
|
3
|
-
require "rexml/document"
|
4
|
-
|
5
|
-
class MyEADStreamListener
|
6
|
-
attr_reader :eadheader, :did
|
7
|
-
|
8
|
-
def el_eadheader(el)
|
9
|
-
@eadheader = el
|
10
|
-
end
|
11
|
-
|
12
|
-
def el_did(el)
|
13
|
-
@did = el
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
class MyEADStreamListener2
|
18
|
-
attr_reader :dsc, :c01
|
19
|
-
|
20
|
-
def el_dsc(el)
|
21
|
-
@dsc = el
|
22
|
-
end
|
23
|
-
|
24
|
-
def el_c01(el)
|
25
|
-
@c01 = el
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
class TestEADStreamParser < TestEAD
|
30
|
-
def initialize(*args)
|
31
|
-
super(*args)
|
32
|
-
|
33
|
-
@test_file = "test_ead_stream_parser.xml"
|
34
|
-
|
35
|
-
@head = "HEADTest"
|
36
|
-
@origination = "somwhere"
|
37
|
-
@unittitle = "Some Title"
|
38
|
-
@unitid = "15235"
|
39
|
-
@abstract = "Some Abstract"
|
40
|
-
@physdesc = "Some Description"
|
41
|
-
@physloc = "Some Location"
|
42
|
-
|
43
|
-
@unitdate = "1/1/2001"
|
44
|
-
@unitdatelabel = "TestLabel"
|
45
|
-
@unitdatetype = "inclusive"
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_base_import
|
49
|
-
did = EAD::EADDescription.new
|
50
|
-
did.head = @head
|
51
|
-
did.origination = @origination
|
52
|
-
did.unittitle = @unittitle
|
53
|
-
did.unitid = @unitid
|
54
|
-
did.abstract = @abstract
|
55
|
-
did.physdesc = @physdesc
|
56
|
-
did.physloc = @physloc
|
57
|
-
|
58
|
-
did.unitdate = EAD::EADUnitDate.new(@unitdate)
|
59
|
-
did.unitdate.label = @unitdatelabel
|
60
|
-
did.unitdate.type = @unitdatetype
|
61
|
-
|
62
|
-
@ead.add_description(did)
|
63
|
-
|
64
|
-
export
|
65
|
-
|
66
|
-
listener = MyEADStreamListener.new
|
67
|
-
parser = EAD::EADStreamParser.new(listener)
|
68
|
-
parser.parse(File.new(@test_file))
|
69
|
-
|
70
|
-
assert(listener.eadheader, "Header was not imported")
|
71
|
-
assert_equal("1", listener.eadheader.eadid.value)
|
72
|
-
assert_equal("Teste", listener.eadheader.eadtitle.value)
|
73
|
-
|
74
|
-
assert(listener.did, "DID was not imported")
|
75
|
-
did = listener.did
|
76
|
-
|
77
|
-
xmlstr = did.create_xml(REXML::Document.new).to_s
|
78
|
-
assert_equal(did.__xml_text.tr(" \n\t",""), xmlstr.tr(" \n\t",""))
|
79
|
-
|
80
|
-
assert_equal(@head, did.head.value)
|
81
|
-
assert_equal(@origination, did.origination.value)
|
82
|
-
assert_equal(@unittitle, did.unittitle.value)
|
83
|
-
assert_equal(@unitid, did.unitid.value)
|
84
|
-
assert_equal(@abstract, did.abstract.value)
|
85
|
-
assert_equal(@physdesc, did.physdesc.value)
|
86
|
-
assert_equal(@physloc, did.physloc.value)
|
87
|
-
|
88
|
-
assert_equal(@unitdate, did.unitdate.value)
|
89
|
-
assert_equal(@unitdatelabel, did.unitdate.label)
|
90
|
-
assert_equal(@unitdatetype, did.unitdate.type)
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_level_numbering
|
94
|
-
dsc = EAD::EADSubordinates.new
|
95
|
-
@ead.add_descelem(dsc)
|
96
|
-
|
97
|
-
c01 = EAD::EADLevel.new
|
98
|
-
dsc.add_level(c01)
|
99
|
-
|
100
|
-
export
|
101
|
-
|
102
|
-
listener = MyEADStreamListener2.new
|
103
|
-
parser = EAD::EADStreamParser.new(listener)
|
104
|
-
parser.parse(File.new(@test_file))
|
105
|
-
|
106
|
-
assert(listener.dsc, "DSC was not imported")
|
107
|
-
assert_equal(listener.dsc.element_id, listener.c01.parent_id)
|
108
|
-
end
|
109
|
-
end
|