eadcodec 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. data/Rakefile +12 -5
  2. data/lib/eadcodec.rb +76 -1
  3. data/lib/elements/accessrestrict.rb +12 -0
  4. data/lib/elements/accruals.rb +11 -0
  5. data/lib/elements/acqinfo.rb +12 -0
  6. data/lib/elements/altformavail.rb +12 -0
  7. data/lib/elements/appraisal.rb +11 -0
  8. data/lib/elements/archdesc.rb +32 -0
  9. data/lib/elements/arrangement.rb +11 -0
  10. data/lib/elements/bibliography.rb +12 -0
  11. data/lib/elements/bioghist.rb +11 -0
  12. data/lib/elements/c.rb +65 -0
  13. data/lib/elements/chronitem.rb +12 -0
  14. data/lib/elements/chronlist.rb +12 -0
  15. data/lib/elements/container.rb +13 -0
  16. data/lib/elements/controlaccess.rb +10 -0
  17. data/lib/elements/creation.rb +4 -0
  18. data/lib/elements/custodhist.rb +11 -0
  19. data/lib/elements/date.rb +14 -0
  20. data/lib/elements/defitem.rb +10 -0
  21. data/lib/elements/description.rb +10 -0
  22. data/lib/elements/dimensions.rb +13 -0
  23. data/lib/elements/dsc.rb +21 -0
  24. data/lib/elements/ead.rb +39 -0
  25. data/lib/elements/eadheader.rb +28 -0
  26. data/lib/elements/event.rb +9 -0
  27. data/lib/elements/extent.rb +13 -0
  28. data/lib/elements/filedesc.rb +13 -0
  29. data/lib/elements/fileplan.rb +10 -0
  30. data/lib/elements/geogname.rb +16 -0
  31. data/lib/elements/head.rb +11 -0
  32. data/lib/elements/id.rb +12 -0
  33. data/lib/elements/item.rb +9 -0
  34. data/lib/elements/label.rb +9 -0
  35. data/lib/elements/langmaterial.rb +12 -0
  36. data/lib/elements/language.rb +20 -0
  37. data/lib/elements/list.rb +13 -0
  38. data/lib/elements/materialspec.rb +13 -0
  39. data/lib/elements/name.rb +15 -0
  40. data/lib/elements/note.rb +15 -0
  41. data/lib/elements/odd.rb +13 -0
  42. data/lib/elements/originalsloc.rb +12 -0
  43. data/lib/elements/origination.rb +12 -0
  44. data/lib/elements/otherfindaid.rb +11 -0
  45. data/lib/elements/p.rb +10 -0
  46. data/lib/elements/physdesc.rb +14 -0
  47. data/lib/elements/physfacet.rb +16 -0
  48. data/lib/elements/physloc.rb +14 -0
  49. data/lib/elements/phystech.rb +11 -0
  50. data/lib/elements/processinfo.rb +11 -0
  51. data/lib/elements/profiledesc.rb +10 -0
  52. data/lib/elements/relatedmaterial.rb +12 -0
  53. data/lib/elements/repository.rb +12 -0
  54. data/lib/elements/scopecontent.rb +12 -0
  55. data/lib/elements/subtitle.rb +4 -0
  56. data/lib/elements/titlestmt.rb +12 -0
  57. data/lib/elements/unitdate.rb +7 -0
  58. data/lib/elements/unitid.rb +16 -0
  59. data/lib/elements/unittitle.rb +13 -0
  60. data/lib/elements/userestrict.rb +12 -0
  61. data/test/{TestEADDescription.rb → description_test.rb} +27 -26
  62. data/test/{TestEADDocument.rb → document_test.rb} +2 -2
  63. data/test/level_test.rb +75 -0
  64. data/test/note_test.rb +36 -0
  65. data/test/partial_export_test.rb +63 -0
  66. data/test/phystech_test.rb +45 -0
  67. data/test/scopecontent_test.rb +41 -0
  68. data/test/{TestEADSubordinates.rb → subordinates_test.rb} +7 -8
  69. data/test/{TestEADSubtitle.rb → subtitle_test.rb} +5 -6
  70. data/test/test_helper.rb +45 -0
  71. data/test/xmlsoparser_test.rb +119 -0
  72. metadata +72 -50
  73. data/lib/EAD.rb +0 -229
  74. data/lib/EADAcqInfo.rb +0 -13
  75. data/lib/EADAltFormAvail.rb +0 -13
  76. data/lib/EADAppraisal.rb +0 -12
  77. data/lib/EADArrangement.rb +0 -12
  78. data/lib/EADBiogHist.rb +0 -10
  79. data/lib/EADChronList.rb +0 -27
  80. data/lib/EADContainer.rb +0 -15
  81. data/lib/EADControlAccess.rb +0 -12
  82. data/lib/EADCustodHist.rb +0 -12
  83. data/lib/EADDate.rb +0 -24
  84. data/lib/EADDescription.rb +0 -22
  85. data/lib/EADDimensions.rb +0 -15
  86. data/lib/EADDocument.rb +0 -106
  87. data/lib/EADEvent.rb +0 -11
  88. data/lib/EADExtent.rb +0 -15
  89. data/lib/EADFilePlan.rb +0 -12
  90. data/lib/EADGeogName.rb +0 -15
  91. data/lib/EADHeader.rb +0 -70
  92. data/lib/EADLabel.rb +0 -11
  93. data/lib/EADLang.rb +0 -42
  94. data/lib/EADLevel.rb +0 -73
  95. data/lib/EADList.rb +0 -36
  96. data/lib/EADMaterialSpec.rb +0 -14
  97. data/lib/EADName.rb +0 -17
  98. data/lib/EADNote.rb +0 -24
  99. data/lib/EADOtherFindAid.rb +0 -12
  100. data/lib/EADPhysFacet.rb +0 -17
  101. data/lib/EADPhysTech.rb +0 -16
  102. data/lib/EADProcessInfo.rb +0 -13
  103. data/lib/EADProfileDesc.rb +0 -17
  104. data/lib/EADRelatedMaterial.rb +0 -21
  105. data/lib/EADRepository.rb +0 -13
  106. data/lib/EADScopeContent.rb +0 -21
  107. data/lib/EADSubordinates.rb +0 -29
  108. data/lib/EADSubtitle.rb +0 -8
  109. data/test/TestEAD.rb +0 -50
  110. data/test/TestEADLevel.rb +0 -76
  111. data/test/TestEADNote.rb +0 -36
  112. data/test/TestEADPhysTech.rb +0 -44
  113. data/test/TestEADScopeContent.rb +0 -43
  114. data/test/TestPartialExport.rb +0 -61
  115. data/test/TestXMLStreamObjectParser.rb +0 -126
@@ -1,21 +0,0 @@
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
data/lib/EADRepository.rb DELETED
@@ -1,13 +0,0 @@
1
- module EAD
2
- class EADRepository < EADElement
3
- elname "repository"
4
-
5
- xmlattr :altrender
6
- xmlattr :audience
7
- xmlattr :encodinganalog
8
- xmlattr :id
9
- xmlattr :label
10
-
11
- xmlsubelements
12
- end
13
- end
@@ -1,21 +0,0 @@
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
@@ -1,29 +0,0 @@
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 DELETED
@@ -1,8 +0,0 @@
1
- require "EAD"
2
-
3
- module EAD
4
- class EADSubtitle < EADElement
5
- elname "subtitle"
6
- xmlsubelements
7
- end
8
- end
data/test/TestEAD.rb DELETED
@@ -1,50 +0,0 @@
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
data/test/TestEADLevel.rb DELETED
@@ -1,76 +0,0 @@
1
- require "TestEAD"
2
- require "EADSubordinates"
3
- require "EADLevel"
4
-
5
- class TestEADLevel < TestEAD
6
- def initialize(*args)
7
- super(*args)
8
-
9
- @test_file = "test_ead_level.xml"
10
- end
11
-
12
- def test_attrs
13
- dsc = EAD::EADSubordinates.new
14
- @ead.add_descelem(dsc)
15
-
16
- c01 = EAD::EADLevel.new
17
- c01.did = EAD::EADDescription.new
18
- c01.phystech = EAD::EADPhysTech.new
19
- dsc.add_level(c01)
20
-
21
- c02 = EAD::EADLevel.new
22
- c01.add_level(c02)
23
-
24
- c03 = EAD::EADLevel.new
25
- c02.add_level(c03)
26
-
27
- export
28
- element_exists("/ead/archdesc/dsc/c01", "Check that the level was added")
29
- element_exists("/ead/archdesc/dsc/c01/did", "Check that the description was added")
30
- element_exists("/ead/archdesc/dsc/c01/phystech", "Check that the phystech was added")
31
- element_exists("/ead/archdesc/dsc/c01/c02", "Check that the second level was added")
32
- element_exists("/ead/archdesc/dsc/c01/c02/c03", "Check that the third level was added")
33
- end
34
-
35
- def test_import
36
- import
37
- dsc = @ead.descelems[0]
38
- assert(dsc.levels[0], "Check that the level was imported")
39
- assert(dsc.levels[0].did, "Check that the description was imported")
40
- assert(dsc.levels[0].levels[0], "Check that the second level was imported")
41
- assert(dsc.levels[0].levels[0].levels[0], "Check that the third level was imported")
42
- end
43
-
44
- def test_attrs_unnumbered
45
- dsc = EAD::EADSubordinates.new
46
- @ead.add_descelem(dsc)
47
-
48
- c01 = EAD::EADLevel.new
49
- c01.set_unnumbered
50
- c01.did = EAD::EADDescription.new
51
- c01.phystech = EAD::EADPhysTech.new
52
- dsc.add_level(c01)
53
-
54
- c02 = EAD::EADLevel.new
55
- c01.add_level(c02)
56
-
57
- c03 = EAD::EADLevel.new
58
- c02.add_level(c03)
59
-
60
- export
61
- element_exists("/ead/archdesc/dsc/c", "Check that the level was added")
62
- element_exists("/ead/archdesc/dsc/c/did", "Check that the description was added")
63
- element_exists("/ead/archdesc/dsc/c/phystech", "Check that the phystech was added")
64
- element_exists("/ead/archdesc/dsc/c/c", "Check that the second level was added")
65
- element_exists("/ead/archdesc/dsc/c/c/c", "Check that the third level was added")
66
- end
67
-
68
- def test_import_unnumbered
69
- import
70
- dsc = @ead.descelems[0]
71
- assert(dsc.levels[0], "Check that the level was imported")
72
- assert(dsc.levels[0].did, "Check that the description was imported")
73
- assert(dsc.levels[0].levels[0], "Check that the second level was imported")
74
- assert(dsc.levels[0].levels[0].levels[0], "Check that the third level was imported")
75
- end
76
- end
data/test/TestEADNote.rb DELETED
@@ -1,36 +0,0 @@
1
- require "TestEAD"
2
- require "EADNote"
3
-
4
- class TestEADNote < TestEAD
5
- def initialize(*args)
6
- super(*args)
7
-
8
- @test_file = "test_ead_note.xml"
9
- @p = "Test p"
10
- end
11
-
12
- def test_attrs
13
- dsc = EAD::EADSubordinates.new
14
- @ead.add_descelem(dsc)
15
-
16
- c01 = EAD::EADLevel.new
17
- dsc.add_level(c01)
18
-
19
- sc = EAD::EADNote.new
20
- sc.p << EAD::EADP.new(@p)
21
- sc.p << EAD::EADP.new(@p)
22
- c01.note = sc
23
-
24
- export
25
- element_exists("/ead/archdesc/dsc/c01/note", "Check that the scopecontent was added")
26
- compare_xpath(@p, "/ead/archdesc/dsc/c01/note/p")
27
- end
28
-
29
-
30
- def test_import
31
- import
32
- note = @ead.descelems[0].levels[0].note
33
- assert_equal(@p, note.p[0].value)
34
- assert_equal(@p, note.p[1].value)
35
- end
36
- end
@@ -1,44 +0,0 @@
1
- require "TestEAD"
2
-
3
- class TestEADPhysTech < TestEAD
4
- def initialize(*args)
5
- super(*args)
6
- @test_file = "test_ead_phystech.xml"
7
- @head = "HEADTest"
8
- @ptext = "Some Text "
9
- end
10
-
11
- def test_export
12
- phystech = EAD::EADPhysTech.new
13
- phystech.head = @head
14
- (1..4).each {|i| phystech.p << EAD::EADP.new(@ptext+i.to_s)}
15
-
16
- did = EAD::EADDescription.new
17
- did.head = "head"
18
- did.unitid = "id"
19
-
20
- @ead.archdesc.phystech = phystech
21
- @ead.archdesc.did = did
22
- export
23
-
24
- # Since we've added content it is now valid EAD
25
- validate_dtd
26
-
27
- element_exists("/ead/archdesc/phystech", "Test did exists")
28
- compare_xpath(@head, "/ead/archdesc/phystech/head")
29
- (1..4).each do |i|
30
- compare_xpath(@ptext+i.to_s, "/ead/archdesc/phystech/p["+i.to_s+"]")
31
- end
32
- end
33
-
34
-
35
- def test_import
36
- import
37
- phystech = @ead.archdesc.phystech
38
-
39
- assert_equal(@head, phystech.head.value)
40
- (1..4).each do |i|
41
- assert_equal(@ptext+i.to_s, phystech.p[i-1].value)
42
- end
43
- end
44
- end
@@ -1,43 +0,0 @@
1
- require "TestEAD"
2
- require "EADSubordinates"
3
- require "EADLevel"
4
- require "EADScopeContent"
5
-
6
- class TestEADScopeContent < TestEAD
7
- def initialize(*args)
8
- super(*args)
9
-
10
- @test_file = "test_ead_scopecontent.xml"
11
- @head = "Test Head"
12
- @p = "Test p"
13
- end
14
-
15
- def test_attrs
16
- dsc = EAD::EADSubordinates.new
17
- @ead.add_descelem(dsc)
18
-
19
- c01 = EAD::EADLevel.new
20
- dsc.add_level(c01)
21
-
22
- sc = EAD::EADScopeContent.new
23
- sc.head = @head
24
- sc.p << EAD::EADP.new(@p)
25
- sc.p << EAD::EADP.new(@p)
26
- c01.scopecontent = sc
27
-
28
- export
29
- element_exists("/ead/archdesc/dsc/c01/scopecontent", "Check that the scopecontent was added")
30
- compare_xpath(@head, "/ead/archdesc/dsc/c01/scopecontent/head")
31
- compare_xpath(@p, "/ead/archdesc/dsc/c01/scopecontent/p")
32
- end
33
-
34
-
35
- def test_import
36
- import
37
- assert_equal(1, @ead.archdesc.dsc[0].c.size)
38
- sc = @ead.archdesc.dsc[0].c[0].scopecontent
39
- assert_equal(@head, sc.head.value)
40
- assert_equal(@p, sc.p[0].value)
41
- assert_equal(@p, sc.p[1].value)
42
- end
43
- end
@@ -1,61 +0,0 @@
1
- require "TestEAD"
2
-
3
- class TestPartialExport < TestEAD
4
- def setup
5
- super
6
- @test_file = "test_ead_partial_export.xml"
7
- @head = "Test head"
8
- @type = "combined"
9
- end
10
-
11
- def test_partial_export
12
- file = File.open(@test_file, "w")
13
-
14
- did = EAD::EADDescription.new
15
- did.head = "abc"
16
- did.unitid = "teste"
17
- @ead.archdesc.did = did
18
-
19
- dsc = EAD::EADSubordinates.new
20
- dsc.type = @type
21
- @ead.archdesc.dsc << dsc
22
-
23
- c01 = EAD::EADLevel.new
24
- c01.did = EAD::EADDescription.new
25
- c01.did.head = "abc"
26
- c01.did.unitid = "teste"
27
- c01.did.unittitle = "teste"
28
-
29
- dsc.c << c01
30
- c01.start_partial_export(file)
31
-
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"
41
- sc = EAD::EADScopeContent.new
42
- sc.p << EAD::EADP.new('value1')
43
- sc.p << EAD::EADP.new('value2')
44
- c02.scopecontent = sc
45
-
46
- dsc.c << c02
47
- c02.start_partial_export(file)
48
-
49
- @ead.end_partial_export(file)
50
-
51
- file.close
52
-
53
- validate_dtd
54
- compare_xpath("fonds", "/ead/archdesc/@level")
55
- compare_xpath(@type, "/ead/archdesc/dsc/@type")
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")
60
- end
61
- end
@@ -1,126 +0,0 @@
1
- $-w = true
2
-
3
- require "test/unit"
4
- require "xmlcodec"
5
- require "EAD"
6
- require "TestEAD"
7
-
8
- class MyStreamListener
9
- attr_reader :ead
10
- def el_ead(el)
11
- @ead = el.get_object
12
- end
13
- end
14
-
15
- class MyConsumingStreamListener
16
- attr_reader :ead
17
- def el_ead(el)
18
- @ead = el.get_object
19
- end
20
-
21
- def el_c02(el)
22
- el.consume
23
- end
24
- end
25
-
26
- class TestXMLStreamObjectParser < TestEAD
27
- def initialize(*args)
28
- super(*args)
29
-
30
- @test_file = "test_ead_stream_object_parser.xml"
31
- end
32
-
33
- def test_import
34
- @ead.eadheader.id = "1"
35
-
36
- dsc = EAD::EADSubordinates.new
37
- @ead.add_descelem(dsc)
38
-
39
- c01 = EAD::EADLevel.new
40
- c01.did = EAD::EADDescription.new
41
- c01.phystech = EAD::EADPhysTech.new
42
- dsc.add_level(c01)
43
-
44
- c02 = EAD::EADLevel.new
45
- c01.add_level(c02)
46
-
47
- c03 = EAD::EADLevel.new
48
- c02.add_level(c03)
49
-
50
- export
51
- listener = MyStreamListener.new
52
- parser = XMLCodec::XMLStreamObjectParser.new(listener)
53
- parser.parse(File.new(@test_file))
54
- @ead = listener.ead
55
-
56
- assert_equal(@ead, parser.top_element)
57
-
58
- assert_equal("1", @ead.eadheader.eadid.value)
59
- assert_equal("1", @ead.eadheader.id)
60
- assert_equal("Teste", @ead.eadheader.eadtitle.value)
61
-
62
- dsc = @ead.descelems[0]
63
- assert(dsc.levels[0], "Check that the level was imported")
64
- assert(dsc.levels[0].did, "Check that the description was imported")
65
- assert(dsc.levels[0].levels[0], "Check that the second level was imported")
66
- assert(dsc.levels[0].levels[0].levels[0], "Check that the third level was imported")
67
- end
68
-
69
- def test_consume
70
- @ead.eadheader.id = "1"
71
-
72
- dsc = EAD::EADSubordinates.new
73
- @ead.add_descelem(dsc)
74
-
75
- c01 = EAD::EADLevel.new
76
- c01.did = EAD::EADDescription.new
77
- c01.phystech = EAD::EADPhysTech.new
78
- dsc.add_level(c01)
79
-
80
- c02 = EAD::EADLevel.new
81
- c01.add_level(c02)
82
-
83
- c03 = EAD::EADLevel.new
84
- c02.add_level(c03)
85
-
86
- export
87
-
88
- listener = MyConsumingStreamListener.new
89
- parser = XMLCodec::XMLStreamObjectParser.new(listener)
90
- parser.parse(File.new(@test_file))
91
- @ead = listener.ead
92
-
93
- dsc = @ead.descelems[0]
94
- assert(dsc.levels[0], "Check that the level was imported")
95
- assert(dsc.levels[0].did, "Check that the description was imported")
96
- assert_equal(0, dsc.levels[0].levels.size, "Check that c03 was consumed")
97
- end
98
-
99
- def test_numbering
100
- @ead.eadheader.id = "1"
101
-
102
- dsc = EAD::EADSubordinates.new
103
- @ead.add_descelem(dsc)
104
-
105
- c01 = EAD::EADLevel.new
106
- c01.did = EAD::EADDescription.new
107
- c01.phystech = EAD::EADPhysTech.new
108
- dsc.add_level(c01)
109
-
110
- export
111
-
112
- listener = MyStreamListener.new
113
- parser = XMLCodec::XMLStreamObjectParser.new(listener)
114
- parser.parse(File.new(@test_file))
115
- @ead = listener.ead
116
-
117
- dsc = @ead.descelems[0]
118
- c01 = dsc.levels[0]
119
-
120
- assert(dsc.element_id)
121
- assert(dsc.parent_id)
122
- assert(c01.element_id)
123
- assert(c01.parent_id)
124
- assert_equal(c01.parent_id, dsc.element_id)
125
- end
126
- end