eadcodec 0.0.4 → 0.1.0

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 (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