eadcodec 0.0.1
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/LICENSE +460 -0
- data/README +21 -0
- data/Rakefile +57 -0
- data/lib/EAD.rb +150 -0
- data/lib/EADBiogHist.rb +10 -0
- data/lib/EADDate.rb +24 -0
- data/lib/EADDescription.rb +21 -0
- data/lib/EADDocument.rb +98 -0
- data/lib/EADHeader.rb +70 -0
- data/lib/EADLevel.rb +72 -0
- data/lib/EADNote.rb +24 -0
- data/lib/EADPhysTech.rb +16 -0
- data/lib/EADProfileDesc.rb +17 -0
- data/lib/EADRelatedMaterial.rb +21 -0
- data/lib/EADScopeContent.rb +21 -0
- data/lib/EADStreamParser.rb +40 -0
- data/lib/EADSubordinates.rb +29 -0
- data/lib/EADSubtitle.rb +8 -0
- data/lib/eadcodec.rb +1 -0
- data/test/TestEAD.rb +50 -0
- data/test/TestEADDescription.rb +73 -0
- data/test/TestEADDocument.rb +32 -0
- data/test/TestEADLevel.rb +76 -0
- data/test/TestEADNote.rb +36 -0
- data/test/TestEADPhysTech.rb +44 -0
- data/test/TestEADScopeContent.rb +43 -0
- data/test/TestEADStreamParser.rb +109 -0
- data/test/TestEADSubordinates.rb +33 -0
- data/test/TestEADSubtitle.rb +40 -0
- data/test/TestPartialExport.rb +53 -0
- data/test/TestXMLStreamObjectParser.rb +126 -0
- data/test/examples/example1.xml +454 -0
- data/test/examples/example2.xml +313 -0
- data/test/examples/example2_exported.xml +512 -0
- metadata +86 -0
data/lib/EADBiogHist.rb
ADDED
data/lib/EADDate.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
module EAD
|
2
|
+
class EADDate < EADElement
|
3
|
+
elname "date"
|
4
|
+
elwithvalue
|
5
|
+
|
6
|
+
xmlattr :altrender
|
7
|
+
xmlattr :audience
|
8
|
+
xmlattr :calendar
|
9
|
+
xmlattr :certainty
|
10
|
+
xmlattr :encodinganalog
|
11
|
+
xmlattr :era
|
12
|
+
xmlattr :id
|
13
|
+
xmlattr :normal
|
14
|
+
xmlattr :type
|
15
|
+
end
|
16
|
+
|
17
|
+
class EADUnitDate < EADDate
|
18
|
+
elname "unitdate"
|
19
|
+
elwithvalue
|
20
|
+
|
21
|
+
xmlattr :datechar
|
22
|
+
xmlattr :label
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require "EADDate"
|
2
|
+
|
3
|
+
module EAD
|
4
|
+
class EADDescription < EADElement
|
5
|
+
elname "did"
|
6
|
+
|
7
|
+
xmlattr :altrender
|
8
|
+
xmlattr :audience
|
9
|
+
xmlattr :encodinganalog
|
10
|
+
xmlattr :id
|
11
|
+
|
12
|
+
xmlsubel :head
|
13
|
+
xmlsubel :origination
|
14
|
+
xmlsubel :unittitle
|
15
|
+
xmlsubel :unitid
|
16
|
+
xmlsubel :abstract
|
17
|
+
xmlsubel :physdesc
|
18
|
+
xmlsubel :physloc
|
19
|
+
xmlsubel :unitdate
|
20
|
+
end
|
21
|
+
end
|
data/lib/EADDocument.rb
ADDED
@@ -0,0 +1,98 @@
|
|
1
|
+
require "EAD"
|
2
|
+
require "XMLUtils"
|
3
|
+
|
4
|
+
module EAD
|
5
|
+
class EADArchDesc < EADElement
|
6
|
+
elname "archdesc"
|
7
|
+
|
8
|
+
xmlattr :level
|
9
|
+
xmlsubel :did
|
10
|
+
xmlsubel :bioghist
|
11
|
+
xmlsubel :scopecontent
|
12
|
+
xmlsubel :phystech
|
13
|
+
xmlsubel_mult :dsc
|
14
|
+
|
15
|
+
def initialize
|
16
|
+
@level = "fonds"
|
17
|
+
end
|
18
|
+
|
19
|
+
def add_descelem(elem)
|
20
|
+
dsc << elem
|
21
|
+
end
|
22
|
+
|
23
|
+
def descelems
|
24
|
+
dsc.dup
|
25
|
+
end
|
26
|
+
|
27
|
+
def current_content
|
28
|
+
text = create_open_tag+"\n"
|
29
|
+
each_subel do |name|
|
30
|
+
if not subel_mult?(name)
|
31
|
+
value = send(name)
|
32
|
+
if value
|
33
|
+
doc = REXML::Document.new
|
34
|
+
xml = value.create_xml(doc)
|
35
|
+
doc.write(text,2)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
text
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
class EADDocument < EADElement
|
44
|
+
elname "ead"
|
45
|
+
|
46
|
+
COUNTRY_CODE = "pt"
|
47
|
+
AGENCY_CODE = "iantt"
|
48
|
+
|
49
|
+
xmlsubel :eadheader
|
50
|
+
xmlsubel :archdesc
|
51
|
+
|
52
|
+
def self.from_file(file)
|
53
|
+
doc = REXML::Document.new(File.new(file))
|
54
|
+
self.import_xml(doc.elements[1])
|
55
|
+
end
|
56
|
+
|
57
|
+
def initialize(id, title)
|
58
|
+
self.eadheader = EADHeader.new(id, title)
|
59
|
+
self.archdesc = EADArchDesc.new
|
60
|
+
end
|
61
|
+
|
62
|
+
def add_description(description)
|
63
|
+
@archdesc.did = description
|
64
|
+
end
|
65
|
+
|
66
|
+
def ead_did
|
67
|
+
@archdesc.did
|
68
|
+
end
|
69
|
+
|
70
|
+
def add_descelem(elem)
|
71
|
+
@archdesc.add_descelem(elem)
|
72
|
+
end
|
73
|
+
|
74
|
+
def descelems
|
75
|
+
@archdesc.descelems
|
76
|
+
end
|
77
|
+
|
78
|
+
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"')
|
82
|
+
create_xml(doc)
|
83
|
+
output = File.open(filename, "w")
|
84
|
+
|
85
|
+
doc.write(output, 0)
|
86
|
+
output.write "\n"
|
87
|
+
output.close
|
88
|
+
end
|
89
|
+
|
90
|
+
def start_partial_export(file)
|
91
|
+
if not already_partial_exported?
|
92
|
+
file << "<?xml version='1.0' encoding='UTF-8'?>\n"
|
93
|
+
file << "<!DOCTYPE ead SYSTEM \"file:///home/pedrocr/ead.dtd\">\n"
|
94
|
+
super
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
data/lib/EADHeader.rb
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
module EAD
|
2
|
+
class EADId < EADElement
|
3
|
+
elname 'eadid'
|
4
|
+
elwithvalue
|
5
|
+
|
6
|
+
xmlattr :countrycode
|
7
|
+
xmlattr :encodinganalog
|
8
|
+
xmlattr :identifier
|
9
|
+
xmlattr :mainagencycode
|
10
|
+
xmlattr :publicid
|
11
|
+
xmlattr :url
|
12
|
+
xmlattr :urn
|
13
|
+
end
|
14
|
+
|
15
|
+
class EADTitleStatement < EADElement
|
16
|
+
elname 'titlestmt'
|
17
|
+
|
18
|
+
xmlsubel :author
|
19
|
+
xmlsubel :sponsor
|
20
|
+
xmlsubel :subtitle
|
21
|
+
xmlsubel :titleproper
|
22
|
+
|
23
|
+
def initialize(title)
|
24
|
+
self.titleproper = title
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class EADFileDesc < EADElement
|
29
|
+
elname 'filedesc'
|
30
|
+
|
31
|
+
xmlattr :altrender
|
32
|
+
xmlattr :audience
|
33
|
+
xmlattr :encodinganalog
|
34
|
+
xmlattr :id
|
35
|
+
xmlsubel :titlestmt
|
36
|
+
|
37
|
+
def initialize(title)
|
38
|
+
self.titlestmt = EADTitleStatement.new(title)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
class EADHeader < EADElement
|
43
|
+
elname 'eadheader'
|
44
|
+
|
45
|
+
xmlattr :altrender
|
46
|
+
xmlattr :audience
|
47
|
+
xmlattr :countryenconding
|
48
|
+
xmlattr :dateencoding
|
49
|
+
xmlattr :encodinganalog
|
50
|
+
xmlattr :findaidstatus
|
51
|
+
xmlattr :id
|
52
|
+
xmlattr :langenconding
|
53
|
+
xmlattr :relatedencoding
|
54
|
+
xmlattr :repositoryencoding
|
55
|
+
xmlattr :scriptencoding
|
56
|
+
|
57
|
+
xmlsubel :eadid
|
58
|
+
xmlsubel :filedesc
|
59
|
+
xmlsubel :profiledesc
|
60
|
+
|
61
|
+
def initialize(id, title)
|
62
|
+
self.eadid = EADId.new(id)
|
63
|
+
self.filedesc = EADFileDesc.new(title)
|
64
|
+
end
|
65
|
+
|
66
|
+
def eadtitle
|
67
|
+
self.filedesc.titlestmt.titleproper
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/EADLevel.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
module EAD
|
2
|
+
class EADLevel < EADElement
|
3
|
+
include EADLevels
|
4
|
+
|
5
|
+
xmlattr :altrender
|
6
|
+
xmlattr :audience
|
7
|
+
xmlattr :encodinganalog
|
8
|
+
xmlattr :id
|
9
|
+
xmlattr :level
|
10
|
+
xmlattr :otherlevel
|
11
|
+
xmlattr :tpattern
|
12
|
+
|
13
|
+
xmlsubel :did
|
14
|
+
xmlsubel :phystech
|
15
|
+
xmlsubel :scopecontent
|
16
|
+
xmlsubel :note
|
17
|
+
xmlsubel :relatedmaterial
|
18
|
+
xmlsubel_mult :c
|
19
|
+
|
20
|
+
attr_reader :parent
|
21
|
+
|
22
|
+
elnames(*["c","c01","c02","c03","c04","c05","c06",
|
23
|
+
"c07","c08","c09","c10","c11","c12"])
|
24
|
+
|
25
|
+
def initialize
|
26
|
+
@unnumbered = false
|
27
|
+
end
|
28
|
+
|
29
|
+
def set_unnumbered
|
30
|
+
@unnumbered = true
|
31
|
+
end
|
32
|
+
|
33
|
+
def set_numbered
|
34
|
+
@unnumbered = false
|
35
|
+
end
|
36
|
+
|
37
|
+
def unnumbered?
|
38
|
+
if not instance_variables.index('@unnumbered')
|
39
|
+
@unnumbered = false
|
40
|
+
end
|
41
|
+
@unnumbered
|
42
|
+
end
|
43
|
+
|
44
|
+
def __parent=(parent)
|
45
|
+
super
|
46
|
+
if parent.unnumbered?
|
47
|
+
self.set_unnumbered
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def description_level
|
52
|
+
if __parent
|
53
|
+
return __parent.description_level + 1
|
54
|
+
else
|
55
|
+
return 0
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
alias_method :oldelname, :elname # Just to shut up the warning
|
60
|
+
def elname
|
61
|
+
if unnumbered?
|
62
|
+
return "c"
|
63
|
+
end
|
64
|
+
|
65
|
+
if description_level < 10
|
66
|
+
return "c0" + description_level.to_s
|
67
|
+
else
|
68
|
+
return "c" + description_level.to_s
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
data/lib/EADNote.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
module EAD
|
2
|
+
class EADNote < EADElement
|
3
|
+
elname "note"
|
4
|
+
|
5
|
+
xmlattr :actuate
|
6
|
+
xmlattr :altrender
|
7
|
+
xmlattr :audience
|
8
|
+
xmlattr :encodinganalog
|
9
|
+
xmlattr :id
|
10
|
+
xmlattr :label
|
11
|
+
xmlattr :show
|
12
|
+
xmlattr :type
|
13
|
+
|
14
|
+
xmlsubel_mult :p
|
15
|
+
|
16
|
+
def value
|
17
|
+
str = ""
|
18
|
+
p.each do |par|
|
19
|
+
str += "<p>"+par.value+"</p>\n"
|
20
|
+
end
|
21
|
+
str
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
data/lib/EADPhysTech.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module EAD
|
2
|
+
class EADCreation < EADElement
|
3
|
+
elname "creation"
|
4
|
+
xmlsubelements
|
5
|
+
end
|
6
|
+
|
7
|
+
class EADProfileDesc < EADElement
|
8
|
+
elname "profiledesc"
|
9
|
+
|
10
|
+
xmlattr :altrender
|
11
|
+
xmlattr :audience
|
12
|
+
xmlattr :encodinganalog
|
13
|
+
xmlattr :id
|
14
|
+
|
15
|
+
xmlsubel :creation
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module EAD
|
2
|
+
class EADRelatedMaterial < EADElement
|
3
|
+
elname "relatedmaterial"
|
4
|
+
|
5
|
+
xmlattr :altrender
|
6
|
+
xmlattr :audience
|
7
|
+
xmlattr :encodinganalog
|
8
|
+
xmlattr :id
|
9
|
+
|
10
|
+
xmlsubel :head
|
11
|
+
xmlsubel_mult :p
|
12
|
+
|
13
|
+
def value
|
14
|
+
str = ""
|
15
|
+
p.each do |par|
|
16
|
+
str += "<p>"+par.value+"</p>\n"
|
17
|
+
end
|
18
|
+
str
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module EAD
|
2
|
+
class EADScopeContent < EADElement
|
3
|
+
elname "scopecontent"
|
4
|
+
|
5
|
+
xmlattr :altrender
|
6
|
+
xmlattr :audience
|
7
|
+
xmlattr :encodinganalog
|
8
|
+
xmlattr :id
|
9
|
+
|
10
|
+
xmlsubel :head
|
11
|
+
xmlsubel_mult :p
|
12
|
+
|
13
|
+
def value
|
14
|
+
str = ""
|
15
|
+
p.each do |par|
|
16
|
+
str += "<p>"+par.value+"</p>\n"
|
17
|
+
end
|
18
|
+
str
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,40 @@
|
|
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
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "EAD.rb"
|
2
|
+
|
3
|
+
module EAD
|
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
|
+
|
21
|
+
def description_level
|
22
|
+
0
|
23
|
+
end
|
24
|
+
|
25
|
+
def unnumbered?
|
26
|
+
false
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/EADSubtitle.rb
ADDED
data/lib/eadcodec.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'EAD'
|
data/test/TestEAD.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), "..")
|
2
|
+
$-w = true
|
3
|
+
|
4
|
+
require 'EAD'
|
5
|
+
require 'test/unit'
|
6
|
+
require 'XMLUtils'
|
7
|
+
|
8
|
+
class TestEAD < Test::Unit::TestCase
|
9
|
+
def initialize(*args)
|
10
|
+
super(*args)
|
11
|
+
@test_file = nil
|
12
|
+
end
|
13
|
+
|
14
|
+
def setup
|
15
|
+
@ead = EAD::EADDocument.new("1", "Teste")
|
16
|
+
end
|
17
|
+
|
18
|
+
def export
|
19
|
+
@ead.export(@test_file)
|
20
|
+
end
|
21
|
+
|
22
|
+
def import
|
23
|
+
@ead = EAD::EADDocument.from_file(@test_file)
|
24
|
+
end
|
25
|
+
|
26
|
+
def validate_well_formed
|
27
|
+
assert(system("rxp", "-xs", @test_file))
|
28
|
+
end
|
29
|
+
|
30
|
+
def validate_dtd
|
31
|
+
assert(system("rxp", "-VVs", @test_file))
|
32
|
+
#assert(system("xmlstarlet", "val", "-d", "ead.dtd", @test_file))
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_fake
|
36
|
+
#Just a fake test to fool Unit::TestCase
|
37
|
+
end
|
38
|
+
|
39
|
+
def compare_xpath(value, path)
|
40
|
+
assert_equal(value, select(path))
|
41
|
+
end
|
42
|
+
|
43
|
+
def element_exists(xpath, *args)
|
44
|
+
assert(XMLUtils::element_exists(xpath, @test_file), *args)
|
45
|
+
end
|
46
|
+
|
47
|
+
def select(xpath)
|
48
|
+
XMLUtils::select_path(xpath, @test_file)
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
require "TestEAD"
|
2
|
+
|
3
|
+
class TestEADDescription < TestEAD
|
4
|
+
def initialize(*args)
|
5
|
+
super(*args)
|
6
|
+
|
7
|
+
@test_file = "test_ead_description.xml"
|
8
|
+
|
9
|
+
@head = "HEADTest"
|
10
|
+
@origination = "somwhere"
|
11
|
+
@unittitle = "Some Title"
|
12
|
+
@unitid = "15235"
|
13
|
+
@abstract = "Some Abstract"
|
14
|
+
@physdesc = "Some Description"
|
15
|
+
@physloc = "Some Location"
|
16
|
+
|
17
|
+
@unitdate = "1/1/2001"
|
18
|
+
@unitdatelabel = "TestLabel"
|
19
|
+
@unitdatetype = "inclusive"
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_description
|
23
|
+
did = EAD::EADDescription.new
|
24
|
+
did.head = @head
|
25
|
+
did.origination = @origination
|
26
|
+
did.unittitle = @unittitle
|
27
|
+
did.unitid = @unitid
|
28
|
+
did.abstract = @abstract
|
29
|
+
did.physdesc = @physdesc
|
30
|
+
did.physloc = @physloc
|
31
|
+
|
32
|
+
did.unitdate = EAD::EADUnitDate.new(@unitdate)
|
33
|
+
did.unitdate.label = @unitdatelabel
|
34
|
+
did.unitdate.type = @unitdatetype
|
35
|
+
|
36
|
+
@ead.add_description(did)
|
37
|
+
export
|
38
|
+
|
39
|
+
# Since we've added content it is now valid EAD
|
40
|
+
validate_dtd
|
41
|
+
|
42
|
+
element_exists("/ead/archdesc/did", "Test did exists")
|
43
|
+
compare_xpath(@head, "/ead/archdesc/did/head")
|
44
|
+
compare_xpath(@origination, "/ead/archdesc/did/origination")
|
45
|
+
compare_xpath(@unittitle, "/ead/archdesc/did/unittitle")
|
46
|
+
compare_xpath(@abstract, "/ead/archdesc/did/abstract")
|
47
|
+
compare_xpath(@physdesc, "/ead/archdesc/did/physdesc")
|
48
|
+
compare_xpath(@physloc, "/ead/archdesc/did/physloc")
|
49
|
+
compare_xpath(@unitid, "/ead/archdesc/did/unitid")
|
50
|
+
|
51
|
+
compare_xpath(@unitdate, "/ead/archdesc/did/unitdate")
|
52
|
+
compare_xpath(@unitdatelabel, "/ead/archdesc/did/unitdate/@label")
|
53
|
+
compare_xpath(@unitdatetype, "/ead/archdesc/did/unitdate/@type")
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
def test_import_description
|
58
|
+
import
|
59
|
+
did = @ead.ead_did
|
60
|
+
|
61
|
+
assert_equal(@head, did.head.value)
|
62
|
+
assert_equal(@origination, did.origination.value)
|
63
|
+
assert_equal(@unittitle, did.unittitle.value)
|
64
|
+
assert_equal(@unitid, did.unitid.value)
|
65
|
+
assert_equal(@abstract, did.abstract.value)
|
66
|
+
assert_equal(@physdesc, did.physdesc.value)
|
67
|
+
assert_equal(@physloc, did.physloc.value)
|
68
|
+
|
69
|
+
assert_equal(@unitdate, did.unitdate.value)
|
70
|
+
assert_equal(@unitdatelabel, did.unitdate.label)
|
71
|
+
assert_equal(@unitdatetype, did.unitdate.type)
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "TestEAD"
|
2
|
+
|
3
|
+
class TestEADDocument < TestEAD
|
4
|
+
def setup
|
5
|
+
super
|
6
|
+
@test_file = "test_ead_document.xml"
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_base_export
|
10
|
+
export
|
11
|
+
# The base document has an empty archdesc and is thus not valid EAD
|
12
|
+
# Just check for well-formed XML, although REXML will probably never
|
13
|
+
# output anything else.
|
14
|
+
validate_well_formed
|
15
|
+
|
16
|
+
compare_xpath("1", "/ead/eadheader/eadid")
|
17
|
+
compare_xpath("Teste", "/ead/eadheader/filedesc/titlestmt/titleproper")
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_base_import
|
21
|
+
import
|
22
|
+
assert_equal("1", @ead.eadheader.eadid.value)
|
23
|
+
assert_equal("Teste", @ead.eadheader.eadtitle.value)
|
24
|
+
end
|
25
|
+
|
26
|
+
#def test_import_export_2
|
27
|
+
# @test_file = "examples/example2.xml"
|
28
|
+
# import
|
29
|
+
# @test_file = "examples/example2_exported.xml"
|
30
|
+
# export
|
31
|
+
#end
|
32
|
+
end
|