modsulator 1.0.3 → 1.0.4.pre.beta.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/modsulator.rb +1 -2
- data/lib/modsulator/modsulator_template.xlsx +0 -0
- data/lib/modsulator/modsulator_template.xml +206 -209
- data/lib/modsulator/validator.rb +4 -6
- data/spec/features/modsulator_sheet_unit_spec.rb +1 -4
- data/spec/features/normalizer_unit_spec.rb +1 -4
- data/spec/features/process_template_spec.rb +2 -5
- data/spec/features/validator_unit_spec.rb +1 -4
- data/spec/fixtures/edition_physLoc_intmediatype.xml +2 -2
- data/spec/fixtures/filled_template_20160711.xml +53 -58
- data/spec/fixtures/location_url.xlsx +0 -0
- data/spec/fixtures/location_url.xml +14 -0
- data/spec/integration_tests/integration_spec.rb +4 -7
- data/spec/lib/modsulator_spec.rb +1 -4
- data/spec/spec_helper.rb +14 -8
- metadata +13 -24
- data/lib/doc/Modsulator.html +0 -725
- data/lib/doc/_index.html +0 -101
- data/lib/doc/class_list.html +0 -58
- data/lib/doc/css/common.css +0 -1
- data/lib/doc/css/full_list.css +0 -57
- data/lib/doc/css/style.css +0 -339
- data/lib/doc/file_list.html +0 -57
- data/lib/doc/frames.html +0 -26
- data/lib/doc/index.html +0 -101
- data/lib/doc/js/app.js +0 -219
- data/lib/doc/js/full_list.js +0 -181
- data/lib/doc/js/jquery.js +0 -4
- data/lib/doc/method_list.html +0 -87
- data/lib/doc/top-level-namespace.html +0 -112
data/lib/modsulator/validator.rb
CHANGED
@@ -7,12 +7,10 @@ class Validator
|
|
7
7
|
|
8
8
|
# Creates a new Validator, using either a provided XML Schema file or the built-in one.
|
9
9
|
# @param schema_file Full path to the desired .xsd file. If none is given, the built-in file will be used.
|
10
|
-
def initialize(schema_file =
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
@schema = Nokogiri::XML::Schema(File.read(schema_file))
|
15
|
-
end
|
10
|
+
def initialize(schema_file = nil)
|
11
|
+
schema_file ||= File.expand_path('../modsulator.xsd', __FILE__)
|
12
|
+
|
13
|
+
@schema = Nokogiri::XML::Schema(File.open(schema_file))
|
16
14
|
end
|
17
15
|
|
18
16
|
|
@@ -1,11 +1,8 @@
|
|
1
|
-
|
2
|
-
require "modsulator"
|
3
|
-
|
4
|
-
describe Modsulator do
|
1
|
+
RSpec.describe Modsulator do
|
5
2
|
before :all do
|
6
3
|
# Create common variables shared across tests and clear out temp directory
|
7
4
|
@tmp_dir = File.expand_path("../../../tmp", __FILE__)
|
8
|
-
Dir.mkdir(@tmp_dir) unless Dir.
|
5
|
+
Dir.mkdir(@tmp_dir) unless Dir.exist?(@tmp_dir)
|
9
6
|
Dir.foreach(@tmp_dir) {|f| fn = File.join(@tmp_dir, f); File.delete(fn) if f != '.' && f != '..' && !File.directory?(fn)}
|
10
7
|
end
|
11
8
|
|
@@ -16,7 +16,7 @@
|
|
16
16
|
<physicalLocation type="repository">Stanford</physicalLocation>
|
17
17
|
<physicalLocation type="discovery">Series 1, Box 1, Folder 1</physicalLocation>
|
18
18
|
<shelfLocator>AB 123</shelfLocator>
|
19
|
-
<url>http://purl.stanford.edu/test1</url>
|
19
|
+
<url usage="primary display">http://purl.stanford.edu/test1</url>
|
20
20
|
</location>
|
21
21
|
</mods>
|
22
22
|
</xmlDoc>
|
@@ -34,7 +34,7 @@
|
|
34
34
|
<physicalLocation type="repository">Spec Coll</physicalLocation>
|
35
35
|
<physicalLocation type="discovery">Series A | Box A | Folder A</physicalLocation>
|
36
36
|
<shelfLocator>CD 456</shelfLocator>
|
37
|
-
<url>http://purl.stanford.edu/test2</url>
|
37
|
+
<url usage="primary display">http://purl.stanford.edu/test2</url>
|
38
38
|
</location>
|
39
39
|
</mods>
|
40
40
|
</xmlDoc>
|
@@ -1,29 +1,29 @@
|
|
1
1
|
<?xml version="1.0"?>
|
2
|
-
<xmlDocs xmlns="http://library.stanford.edu/xmlDocs" datetime="2016-
|
2
|
+
<xmlDocs xmlns="http://library.stanford.edu/xmlDocs" datetime="2016-12-01 10:04:45AM" sourceFile="filled_template_20160711.xlsx">
|
3
3
|
<xmlDoc id="descMetadata" objectId="123">
|
4
4
|
<mods xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.loc.gov/mods/v3" version="3.5" xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-5.xsd">
|
5
|
-
<titleInfo authority="ti1:authority" authorityURI="ti1:authorityURI" valueURI="ti1:valueURI" nameTitleGroup="ti1:nameTitleGroup"
|
5
|
+
<titleInfo authority="ti1:authority" authorityURI="ti1:authorityURI" valueURI="ti1:valueURI" nameTitleGroup="ti1:nameTitleGroup">
|
6
6
|
<nonSort>ti1:nonSort</nonSort>
|
7
7
|
<title>ti1:title</title>
|
8
8
|
<subTitle>ti1:subTitle</subTitle>
|
9
9
|
<partNumber>ti1:partNumber</partNumber>
|
10
10
|
<partName>ti1:partName</partName>
|
11
11
|
</titleInfo>
|
12
|
-
<titleInfo type="ti2:type" displayLabel="ti2:displayLabel" authority="ti2:authority" authorityURI="ti2:authorityURI" valueURI="ti2:valueURI" nameTitleGroup="ti2:nameTitleGroup"
|
12
|
+
<titleInfo type="ti2:type" displayLabel="ti2:displayLabel" authority="ti2:authority" authorityURI="ti2:authorityURI" valueURI="ti2:valueURI" nameTitleGroup="ti2:nameTitleGroup">
|
13
13
|
<nonSort>ti2:nonSort</nonSort>
|
14
14
|
<title>ti2:title</title>
|
15
15
|
<subTitle>ti2:subTitle</subTitle>
|
16
16
|
<partNumber>ti2:partNumber</partNumber>
|
17
17
|
<partName>ti2:partName</partName>
|
18
18
|
</titleInfo>
|
19
|
-
<titleInfo type="ti3:type" displayLabel="ti3:displayLabel" authority="ti3:authority" authorityURI="ti3:authorityURI" valueURI="ti3:valueURI" nameTitleGroup="ti3:nameTitleGroup"
|
19
|
+
<titleInfo type="ti3:type" displayLabel="ti3:displayLabel" authority="ti3:authority" authorityURI="ti3:authorityURI" valueURI="ti3:valueURI" nameTitleGroup="ti3:nameTitleGroup">
|
20
20
|
<nonSort>ti3:nonSort</nonSort>
|
21
21
|
<title>ti3:title</title>
|
22
22
|
<subTitle>ti3:subTitle</subTitle>
|
23
23
|
<partNumber>ti3:partNumber</partNumber>
|
24
24
|
<partName>ti3:partName</partName>
|
25
25
|
</titleInfo>
|
26
|
-
<name type="na1:type" usage="na1:usage" authority="na1:authority" authorityURI="na1:authorityURI" valueURI="na1:valueURI" nameTitleGroup="na1:nameTitleGroup"
|
26
|
+
<name type="na1:type" usage="na1:usage" authority="na1:authority" authorityURI="na1:authorityURI" valueURI="na1:valueURI" nameTitleGroup="na1:nameTitleGroup">
|
27
27
|
<namePart>na1:namePart</namePart>
|
28
28
|
<role>
|
29
29
|
<roleTerm type="code" authority="ro1:authority" authorityURI="ro1:authorityURI" valueURI="ro1:valueURI">ro1:roleCode</roleTerm>
|
@@ -38,7 +38,7 @@
|
|
38
38
|
<roleTerm type="text" authority="ro1:authority3" authorityURI="ro1:authorityURI3" valueURI="ro1:valueURI3">ro1:roleText3</roleTerm>
|
39
39
|
</role>
|
40
40
|
</name>
|
41
|
-
<name type="na2:type" authority="na2:authority" authorityURI="na2:authorityURI" valueURI="na2:valueURI" nameTitleGroup="na2:nameTitleGroup"
|
41
|
+
<name type="na2:type" authority="na2:authority" authorityURI="na2:authorityURI" valueURI="na2:valueURI" nameTitleGroup="na2:nameTitleGroup">
|
42
42
|
<namePart>na2:namePart</namePart>
|
43
43
|
<role>
|
44
44
|
<roleTerm type="code" authority="ro2:authority" authorityURI="ro2:authorityURI" valueURI="ro2:valueURI">ro2:roleCode</roleTerm>
|
@@ -53,7 +53,7 @@
|
|
53
53
|
<roleTerm type="text" authority="ro2:authority3" authorityURI="ro2:authorityURI3" valueURI="ro2:valueURI3">ro2:roleText3</roleTerm>
|
54
54
|
</role>
|
55
55
|
</name>
|
56
|
-
<name type="na3:type" authority="na3:authority" authorityURI="na3:authorityURI" valueURI="na3:valueURI" nameTitleGroup="na3:nameTitleGroup"
|
56
|
+
<name type="na3:type" authority="na3:authority" authorityURI="na3:authorityURI" valueURI="na3:valueURI" nameTitleGroup="na3:nameTitleGroup">
|
57
57
|
<namePart>na3:namePart</namePart>
|
58
58
|
<role>
|
59
59
|
<roleTerm type="code" authority="ro3:authority" authorityURI="ro3:authorityURI" valueURI="ro3:valueURI">ro3:roleCode</roleTerm>
|
@@ -68,7 +68,7 @@
|
|
68
68
|
<roleTerm type="text" authority="ro3:authority3" authorityURI="ro3:authorityURI3" valueURI="ro3:valueURI3">ro3:roleText3</roleTerm>
|
69
69
|
</role>
|
70
70
|
</name>
|
71
|
-
<name type="na4:type" authority="na4:authority" authorityURI="na4:authorityURI" valueURI="na4:valueURI" nameTitleGroup="na4:nameTitleGroup"
|
71
|
+
<name type="na4:type" authority="na4:authority" authorityURI="na4:authorityURI" valueURI="na4:valueURI" nameTitleGroup="na4:nameTitleGroup">
|
72
72
|
<namePart>na4:namePart</namePart>
|
73
73
|
<role>
|
74
74
|
<roleTerm type="code" authority="ro4:authority" authorityURI="ro4:authorityURI" valueURI="ro4:valueURI">ro4:roleCode</roleTerm>
|
@@ -83,7 +83,7 @@
|
|
83
83
|
<roleTerm type="text" authority="ro4:authority3" authorityURI="ro4:authorityURI3" valueURI="ro4:valueURI3">ro4:roleText3</roleTerm>
|
84
84
|
</role>
|
85
85
|
</name>
|
86
|
-
<name type="na5:type" authority="na5:authority" authorityURI="na5:authorityURI" valueURI="na5:valueURI" nameTitleGroup="na5:nameTitleGroup"
|
86
|
+
<name type="na5:type" authority="na5:authority" authorityURI="na5:authorityURI" valueURI="na5:valueURI" nameTitleGroup="na5:nameTitleGroup">
|
87
87
|
<namePart>na5:namePart</namePart>
|
88
88
|
<role>
|
89
89
|
<roleTerm type="code" authority="ro5:authority" authorityURI="ro5:authorityURI" valueURI="ro5:valueURI">ro5:roleCode</roleTerm>
|
@@ -104,12 +104,12 @@
|
|
104
104
|
<genre type="ge1:type" authority="ge1:authority" authorityURI="ge1:authorityURI" valueURI="ge1:valueURI">ge1:genre</genre>
|
105
105
|
<genre type="ge2:type" authority="ge2:authority" authorityURI="ge2:authorityURI" valueURI="ge2:valueURI">ge2:genre</genre>
|
106
106
|
<genre type="ge3:type" authority="ge3:authority" authorityURI="ge3:authorityURI" valueURI="ge3:valueURI">ge3:genre</genre>
|
107
|
-
<originInfo displayLabel="or:displayLabel" eventType="or:eventType"
|
107
|
+
<originInfo displayLabel="or:displayLabel" eventType="or:eventType">
|
108
108
|
<place>
|
109
109
|
<placeTerm type="code" authority="pl:authority" authorityURI="pl:authorityURI" valueURI="pl:valueURI">pl:placeCode</placeTerm>
|
110
110
|
<placeTerm type="text" authority="pl:authority" authorityURI="pl:authorityURI" valueURI="pl:valueURI">pl:placeText</placeTerm>
|
111
111
|
</place>
|
112
|
-
<publisher
|
112
|
+
<publisher>or:publisher</publisher>
|
113
113
|
<dateCreated keyDate="dt:dateCreatedKeyDate" encoding="dt:dateCreatedEncoding" qualifier="dt:dateCreatedQualifier" point="dt:dateCreatedPoint">dt:dateCreated</dateCreated>
|
114
114
|
<dateCreated encoding="dt:dateCreatedEncoding" qualifier="dt:dateCreated2Qualifier" point="dt:dateCreated2Point">dt:dateCreated2</dateCreated>
|
115
115
|
<dateIssued keyDate="dt:dateIssuedKeyDate" encoding="dt:dateIssuedEncoding" qualifier="dt:dateIssuedQualifier" point="dt:dateIssuedPoint">dt:dateIssued</dateIssued>
|
@@ -118,17 +118,15 @@
|
|
118
118
|
<dateCaptured encoding="dt:dateCapturedEncoding" qualifier="dt:dateCaptured2Qualifier" point="dt:dateCaptured2Point">dt:dateCaptured2</dateCaptured>
|
119
119
|
<copyrightDate keyDate="dt:copyrightDateKeyDate" encoding="dt:copyrightDateEncoding" qualifier="dt:copyrightDateQualifier" point="dt:copyrightDatePoint">dt:copyrightDate</copyrightDate>
|
120
120
|
<copyrightDate encoding="dt:copyrightDateEncoding" qualifier="dt:copyrightDate2Qualifier" point="dt:copyrightDate2Point">dt:copyrightDate2</copyrightDate>
|
121
|
-
<dateOther keyDate="dt:dateOtherKeyDate" type="dt:dateOtherType" encoding="dt:dateOtherEncoding" qualifier="dt:dateOtherQualifier" point="dt:dateOtherPoint" script="dt:dateOtherScript" transliteration="dt:dateOtherTransliteration">dt:dateOther</dateOther>
|
122
|
-
<dateOther type="dt:dateOtherType" encoding="dt:dateOtherEncoding" qualifier="dt:dateOther2Qualifier" point="dt:dateOther2Point" script="dt:dateOtherScript" transliteration="dt:dateOtherTransliteration">dt:dateOther2</dateOther>
|
123
121
|
<edition>or:edition</edition>
|
124
122
|
<issuance>or:issuance</issuance>
|
125
123
|
</originInfo>
|
126
|
-
<originInfo displayLabel="or2:displayLabel" eventType="or2:eventType"
|
124
|
+
<originInfo displayLabel="or2:displayLabel" eventType="or2:eventType">
|
127
125
|
<place>
|
128
126
|
<placeTerm type="code" authority="or2:pl:authority" authorityURI="or2:pl:authorityURI" valueURI="or2:pl:valueURI">or2:pl:placeCode</placeTerm>
|
129
127
|
<placeTerm type="text" authority="or2:pl:authority" authorityURI="or2:pl:authorityURI" valueURI="or2:pl:valueURI">or2:pl:placeText</placeTerm>
|
130
128
|
</place>
|
131
|
-
<publisher
|
129
|
+
<publisher>or2:publisher</publisher>
|
132
130
|
<dateCreated keyDate="or2:dt:dateCreatedKeyDate" encoding="or2:dt:dateCreatedEncoding" qualifier="or2:dt:dateCreatedQualifier" point="or2:dt:dateCreatedPoint">or2:dt:dateCreated</dateCreated>
|
133
131
|
<dateCreated encoding="or2:dt:dateCreatedEncoding" qualifier="or2:dt:dateCreated2Qualifier" point="or2:dt:dateCreated2Point">or2:dt:dateCreated2</dateCreated>
|
134
132
|
<dateIssued keyDate="or2:dt:dateIssuedKeyDate" encoding="or2:dt:dateIssuedEncoding" qualifier="or2:dt:dateIssuedQualifier" point="or2:dt:dateIssuedPoint">or2:dt:dateIssued</dateIssued>
|
@@ -137,9 +135,6 @@
|
|
137
135
|
<dateCaptured encoding="or2:dt:dateCapturedEncoding" qualifier="or2:dt:dateCaptured2Qualifier" point="or2:dt:dateCaptured2Point">or2:dt:dateCaptured2</dateCaptured>
|
138
136
|
<copyrightDate keyDate="or2:dt:copyrightDateKeyDate" encoding="or2:dt:copyrightDateEncoding" qualifier="or2:dt:copyrightDateQualifier" point="or2:dt:copyrightDatePoint">or2:dt:copyrightDate</copyrightDate>
|
139
137
|
<copyrightDate encoding="or2:dt:copyrightDateEncoding" qualifier="or2:dt:copyrightDate2Qualifier" point="or2:dt:copyrightDate2Point">or2:dt:copyrightDate2</copyrightDate>
|
140
|
-
<dateOther keyDate="or2:dt:dateOtherKeyDate" type="or2:dt:dateOtherType" encoding="or2:dt:dateOtherEncoding" qualifier="or2:dt:dateOtherQualifier" point="or2:dt:dateOtherPoint" script="or2:dt:dateOtherScript" transliteration="or2:dt:dateOtherTransliteration">or2:dt:dateOther</dateOther>
|
141
|
-
<dateOther type="or2:dt:dateOtherType" encoding="or2:dt:dateOtherEncoding" qualifier="or2:dt:dateOther2Qualifier" point="or2:dt:dateOther2Point" script="or2:dt:dateOtherScript" transliteration="or2:dt:dateOtherTransliteration">or2:dt:dateOther2</dateOther>
|
142
|
-
<edition>or2:edition</edition>
|
143
138
|
<issuance>or2:issuance</issuance>
|
144
139
|
</originInfo>
|
145
140
|
<language>
|
@@ -164,42 +159,42 @@
|
|
164
159
|
<internetMediaType>ph1:internetMediaType3</internetMediaType>
|
165
160
|
<internetMediaType>ph1:internetMediaType4</internetMediaType>
|
166
161
|
<internetMediaType>ph1:internetMediaType5</internetMediaType>
|
167
|
-
<note displayLabel="ph1:displayLabel1"
|
168
|
-
<note displayLabel="ph1:displayLabel2"
|
169
|
-
<note displayLabel="ph1:displayLabel3"
|
170
|
-
<note displayLabel="ph1:displayLabel4"
|
171
|
-
<note displayLabel="ph1:displayLabel5"
|
172
|
-
<note displayLabel="ph1:displayLabel6"
|
173
|
-
<note displayLabel="ph1:displayLabel7"
|
174
|
-
<note displayLabel="ph1:displayLabel8"
|
175
|
-
<note displayLabel="ph1:displayLabel9"
|
162
|
+
<note displayLabel="ph1:displayLabel1">ph1:note1</note>
|
163
|
+
<note displayLabel="ph1:displayLabel2">ph1:note2</note>
|
164
|
+
<note displayLabel="ph1:displayLabel3">ph1:note3</note>
|
165
|
+
<note displayLabel="ph1:displayLabel4">ph1:note4</note>
|
166
|
+
<note displayLabel="ph1:displayLabel5">ph1:note5</note>
|
167
|
+
<note displayLabel="ph1:displayLabel6">ph1:note6</note>
|
168
|
+
<note displayLabel="ph1:displayLabel7">ph1:note7</note>
|
169
|
+
<note displayLabel="ph1:displayLabel8">ph1:note8</note>
|
170
|
+
<note displayLabel="ph1:displayLabel9">ph1:note9</note>
|
176
171
|
</physicalDescription>
|
177
172
|
<physicalDescription>
|
178
173
|
<form authority="ph2:formAuthority" authorityURI="ph2:formAuthorityURI" valueURI="ph2:formValueURI">ph2:form</form>
|
179
174
|
<extent>ph2:extent</extent>
|
180
175
|
<reformattingQuality>ph2:reformattingQuality</reformattingQuality>
|
181
176
|
<digitalOrigin>ph2:digitalOrigin</digitalOrigin>
|
182
|
-
<note displayLabel="ph2:displayLabel1"
|
177
|
+
<note displayLabel="ph2:displayLabel1">ph2:note1</note>
|
183
178
|
</physicalDescription>
|
184
179
|
<physicalDescription>
|
185
180
|
<form authority="ph3:formAuthority" authorityURI="ph3:formAuthorityURI" valueURI="ph3:formValueURI">ph3:form</form>
|
186
181
|
<extent>ph3:extent</extent>
|
187
182
|
<reformattingQuality>ph3:reformattingQuality</reformattingQuality>
|
188
183
|
<digitalOrigin>ph3:digitalOrigin</digitalOrigin>
|
189
|
-
<note displayLabel="ph3:displayLabel1"
|
184
|
+
<note displayLabel="ph3:displayLabel1">ph3:note1</note>
|
190
185
|
</physicalDescription>
|
191
|
-
<abstract displayLabel="ab:displayLabel"
|
192
|
-
<tableOfContents displayLabel="tc:displayLabel"
|
193
|
-
<note type="no1:type" displayLabel="no1:displayLabel"
|
194
|
-
<note type="no2:type" displayLabel="no2:displayLabel"
|
195
|
-
<note type="no3:type" displayLabel="no3:displayLabel"
|
196
|
-
<note type="no4:type" displayLabel="no4:displayLabel"
|
197
|
-
<note type="no5:type" displayLabel="no5:displayLabel"
|
198
|
-
<subject authority="sn1:authority" authorityURI="sn1:authorityURI" valueURI="sn1:valueURI"
|
199
|
-
<name type="sn1:p1:nameType" authority="sn1:p1:nm:authority" authorityURI="sn1:p1:nm:authorityURI" valueURI="sn1:p1:nm:valueURI"
|
186
|
+
<abstract displayLabel="ab:displayLabel">ab:abstract</abstract>
|
187
|
+
<tableOfContents displayLabel="tc:displayLabel">tc:tableOfContents</tableOfContents>
|
188
|
+
<note type="no1:type" displayLabel="no1:displayLabel">no1:note</note>
|
189
|
+
<note type="no2:type" displayLabel="no2:displayLabel">no2:note</note>
|
190
|
+
<note type="no3:type" displayLabel="no3:displayLabel">no3:note</note>
|
191
|
+
<note type="no4:type" displayLabel="no4:displayLabel">no4:note</note>
|
192
|
+
<note type="no5:type" displayLabel="no5:displayLabel">no5:note</note>
|
193
|
+
<subject authority="sn1:authority" authorityURI="sn1:authorityURI" valueURI="sn1:valueURI">
|
194
|
+
<name type="sn1:p1:nameType" authority="sn1:p1:nm:authority" authorityURI="sn1:p1:nm:authorityURI" valueURI="sn1:p1:nm:valueURI">
|
200
195
|
<namePart>sn1:p1:name</namePart>
|
201
196
|
</name>
|
202
|
-
<titleInfo type="sn1:p1:titleType" authority="sn1:p1:ti:authority" authorityURI="sn1:p1:ti:authorityURI" valueURI="sn1:p1:ti:valueURI"
|
197
|
+
<titleInfo type="sn1:p1:titleType" authority="sn1:p1:ti:authority" authorityURI="sn1:p1:ti:authorityURI" valueURI="sn1:p1:ti:valueURI">
|
203
198
|
<title>sn1:p1:title</title>
|
204
199
|
<subTitle>sn1:p1:subTitle</subTitle>
|
205
200
|
<partNumber>sn1:p1:partNumber</partNumber>
|
@@ -210,11 +205,11 @@
|
|
210
205
|
<topic authority="sn1:p4:authority" authorityURI="sn1:p4:authorityURI" valueURI="sn1:p4:valueURI">sn1:p4:value</topic>
|
211
206
|
<topic authority="sn1:p5:authority" authorityURI="sn1:p5:authorityURI" valueURI="sn1:p5:valueURI">sn1:p5:value</topic>
|
212
207
|
</subject>
|
213
|
-
<subject authority="sn2:authority" authorityURI="sn2:authorityURI" valueURI="sn2:valueURI"
|
214
|
-
<name type="sn2:p1:nameType" authority="sn2:p1:nm:authority" authorityURI="sn2:p1:nm:authorityURI" valueURI="sn2:p1:nm:valueURI"
|
208
|
+
<subject authority="sn2:authority" authorityURI="sn2:authorityURI" valueURI="sn2:valueURI">
|
209
|
+
<name type="sn2:p1:nameType" authority="sn2:p1:nm:authority" authorityURI="sn2:p1:nm:authorityURI" valueURI="sn2:p1:nm:valueURI">
|
215
210
|
<namePart>sn2:p1:name</namePart>
|
216
211
|
</name>
|
217
|
-
<titleInfo type="sn2:p1:titleType" authority="sn2:p1:ti:authority" authorityURI="sn2:p1:ti:authorityURI" valueURI="sn2:p1:ti:valueURI"
|
212
|
+
<titleInfo type="sn2:p1:titleType" authority="sn2:p1:ti:authority" authorityURI="sn2:p1:ti:authorityURI" valueURI="sn2:p1:ti:valueURI">
|
218
213
|
<title>sn2:p1:title</title>
|
219
214
|
<subTitle>sn2:p1:subTitle</subTitle>
|
220
215
|
<partNumber>sn2:p1:partNumber</partNumber>
|
@@ -225,11 +220,11 @@
|
|
225
220
|
<topic authority="sn2:p4:authority" authorityURI="sn2:p4:authorityURI" valueURI="sn2:p4:valueURI">sn2:p4:value</topic>
|
226
221
|
<topic authority="sn2:p5:authority" authorityURI="sn2:p5:authorityURI" valueURI="sn2:p5:valueURI">sn2:p5:value</topic>
|
227
222
|
</subject>
|
228
|
-
<subject authority="sn3:authority" authorityURI="sn3:authorityURI" valueURI="sn3:valueURI"
|
229
|
-
<name type="sn3:p1:nameType" authority="sn3:p1:nm:authority" authorityURI="sn3:p1:nm:authorityURI" valueURI="sn3:p1:nm:valueURI"
|
223
|
+
<subject authority="sn3:authority" authorityURI="sn3:authorityURI" valueURI="sn3:valueURI">
|
224
|
+
<name type="sn3:p1:nameType" authority="sn3:p1:nm:authority" authorityURI="sn3:p1:nm:authorityURI" valueURI="sn3:p1:nm:valueURI">
|
230
225
|
<namePart>sn3:p1:name</namePart>
|
231
226
|
</name>
|
232
|
-
<titleInfo type="sn3:p1:titleType" authority="sn3:p1:ti:authority" authorityURI="sn3:p1:ti:authorityURI" valueURI="sn3:p1:ti:valueURI"
|
227
|
+
<titleInfo type="sn3:p1:titleType" authority="sn3:p1:ti:authority" authorityURI="sn3:p1:ti:authorityURI" valueURI="sn3:p1:ti:valueURI">
|
233
228
|
<title>sn3:p1:title</title>
|
234
229
|
<subTitle>sn3:p1:subTitle</subTitle>
|
235
230
|
<partNumber>sn3:p1:partNumber</partNumber>
|
@@ -240,11 +235,11 @@
|
|
240
235
|
<topic authority="sn3:p4:authority" authorityURI="sn3:p4:authorityURI" valueURI="sn3:p4:valueURI">sn3:p4:value</topic>
|
241
236
|
<topic authority="sn3:p5:authority" authorityURI="sn3:p5:authorityURI" valueURI="sn3:p5:valueURI">sn3:p5:value</topic>
|
242
237
|
</subject>
|
243
|
-
<subject authority="sn4:authority" authorityURI="sn4:authorityURI" valueURI="sn4:valueURI"
|
244
|
-
<name type="sn4:p1:nameType" authority="sn4:p1:nm:authority" authorityURI="sn4:p1:nm:authorityURI" valueURI="sn4:p1:nm:valueURI"
|
238
|
+
<subject authority="sn4:authority" authorityURI="sn4:authorityURI" valueURI="sn4:valueURI">
|
239
|
+
<name type="sn4:p1:nameType" authority="sn4:p1:nm:authority" authorityURI="sn4:p1:nm:authorityURI" valueURI="sn4:p1:nm:valueURI">
|
245
240
|
<namePart>sn4:p1:name</namePart>
|
246
241
|
</name>
|
247
|
-
<titleInfo type="sn4:p1:titleType" authority="sn4:p1:ti:authority" authorityURI="sn4:p1:ti:authorityURI" valueURI="sn4:p1:ti:valueURI"
|
242
|
+
<titleInfo type="sn4:p1:titleType" authority="sn4:p1:ti:authority" authorityURI="sn4:p1:ti:authorityURI" valueURI="sn4:p1:ti:valueURI">
|
248
243
|
<title>sn4:p1:title</title>
|
249
244
|
<subTitle>sn4:p1:subTitle</subTitle>
|
250
245
|
<partNumber>sn4:p1:partNumber</partNumber>
|
@@ -255,11 +250,11 @@
|
|
255
250
|
<topic authority="sn4:p4:authority" authorityURI="sn4:p4:authorityURI" valueURI="sn4:p4:valueURI">sn4:p4:value</topic>
|
256
251
|
<topic authority="sn4:p5:authority" authorityURI="sn4:p5:authorityURI" valueURI="sn4:p5:valueURI">sn4:p5:value</topic>
|
257
252
|
</subject>
|
258
|
-
<subject authority="sn5:authority" authorityURI="sn5:authorityURI" valueURI="sn5:valueURI"
|
259
|
-
<name type="sn5:p1:nameType" authority="sn5:p1:nm:authority" authorityURI="sn5:p1:nm:authorityURI" valueURI="sn5:p1:nm:valueURI"
|
253
|
+
<subject authority="sn5:authority" authorityURI="sn5:authorityURI" valueURI="sn5:valueURI">
|
254
|
+
<name type="sn5:p1:nameType" authority="sn5:p1:nm:authority" authorityURI="sn5:p1:nm:authorityURI" valueURI="sn5:p1:nm:valueURI">
|
260
255
|
<namePart>sn5:p1:name</namePart>
|
261
256
|
</name>
|
262
|
-
<titleInfo type="sn5:p1:titleType" authority="sn5:p1:ti:authority" authorityURI="sn5:p1:ti:authorityURI" valueURI="sn5:p1:ti:valueURI"
|
257
|
+
<titleInfo type="sn5:p1:titleType" authority="sn5:p1:ti:authority" authorityURI="sn5:p1:ti:authorityURI" valueURI="sn5:p1:ti:valueURI">
|
263
258
|
<title>sn5:p1:title</title>
|
264
259
|
<subTitle>sn5:p1:subTitle</subTitle>
|
265
260
|
<partNumber>sn5:p1:partNumber</partNumber>
|
@@ -270,35 +265,35 @@
|
|
270
265
|
<topic authority="sn5:p4:authority" authorityURI="sn5:p4:authorityURI" valueURI="sn5:p4:valueURI">sn5:p4:value</topic>
|
271
266
|
<topic authority="sn5:p5:authority" authorityURI="sn5:p5:authorityURI" valueURI="sn5:p5:valueURI">sn5:p5:value</topic>
|
272
267
|
</subject>
|
273
|
-
<subject authority="su1:authority" authorityURI="su1:authorityURI" valueURI="su1:valueURI"
|
268
|
+
<subject authority="su1:authority" authorityURI="su1:authorityURI" valueURI="su1:valueURI">
|
274
269
|
<topic authority="su1:p1:authority" authorityURI="su1:p1:authorityURI" valueURI="su1:p1:valueURI">su1:p1:value</topic>
|
275
270
|
<topic authority="su1:p2:authority" authorityURI="su1:p2:authorityURI" valueURI="su1:p2:valueURI">su1:p2:value</topic>
|
276
271
|
<topic authority="su1:p3:authority" authorityURI="su1:p3:authorityURI" valueURI="su1:p3:valueURI">su1:p3:value</topic>
|
277
272
|
<topic authority="su1:p4:authority" authorityURI="su1:p4:authorityURI" valueURI="su1:p4:valueURI">su1:p4:value</topic>
|
278
273
|
<topic authority="su1:p5:authority" authorityURI="su1:p5:authorityURI" valueURI="su1:p5:valueURI">su1:p5:value</topic>
|
279
274
|
</subject>
|
280
|
-
<subject authority="su2:authority" authorityURI="su2:authorityURI" valueURI="su2:valueURI"
|
275
|
+
<subject authority="su2:authority" authorityURI="su2:authorityURI" valueURI="su2:valueURI">
|
281
276
|
<topic authority="su2:p1:authority" authorityURI="su2:p1:authorityURI" valueURI="su2:p1:valueURI">su2:p1:value</topic>
|
282
277
|
<topic authority="su2:p2:authority" authorityURI="su2:p2:authorityURI" valueURI="su2:p2:valueURI">su2:p2:value</topic>
|
283
278
|
<topic authority="su2:p3:authority" authorityURI="su2:p3:authorityURI" valueURI="su2:p3:valueURI">su2:p3:value</topic>
|
284
279
|
<topic authority="su2:p4:authority" authorityURI="su2:p4:authorityURI" valueURI="su2:p4:valueURI">su2:p4:value</topic>
|
285
280
|
<topic authority="su2:p5:authority" authorityURI="su2:p5:authorityURI" valueURI="su2:p5:valueURI">su2:p5:value</topic>
|
286
281
|
</subject>
|
287
|
-
<subject authority="su3:authority" authorityURI="su3:authorityURI" valueURI="su3:valueURI"
|
282
|
+
<subject authority="su3:authority" authorityURI="su3:authorityURI" valueURI="su3:valueURI">
|
288
283
|
<topic authority="su3:p1:authority" authorityURI="su3:p1:authorityURI" valueURI="su3:p1:valueURI">su3:p1:value</topic>
|
289
284
|
<topic authority="su3:p2:authority" authorityURI="su3:p2:authorityURI" valueURI="su3:p2:valueURI">su3:p2:value</topic>
|
290
285
|
<topic authority="su3:p3:authority" authorityURI="su3:p3:authorityURI" valueURI="su3:p3:valueURI">su3:p3:value</topic>
|
291
286
|
<topic authority="su3:p4:authority" authorityURI="su3:p4:authorityURI" valueURI="su3:p4:valueURI">su3:p4:value</topic>
|
292
287
|
<topic authority="su3:p5:authority" authorityURI="su3:p5:authorityURI" valueURI="su3:p5:valueURI">su3:p5:value</topic>
|
293
288
|
</subject>
|
294
|
-
<subject authority="su4:authority" authorityURI="su4:authorityURI" valueURI="su4:valueURI"
|
289
|
+
<subject authority="su4:authority" authorityURI="su4:authorityURI" valueURI="su4:valueURI">
|
295
290
|
<topic authority="su4:p1:authority" authorityURI="su4:p1:authorityURI" valueURI="su4:p1:valueURI">su4:p1:value</topic>
|
296
291
|
<topic authority="su4:p2:authority" authorityURI="su4:p2:authorityURI" valueURI="su4:p2:valueURI">su4:p2:value</topic>
|
297
292
|
<topic authority="su4:p3:authority" authorityURI="su4:p3:authorityURI" valueURI="su4:p3:valueURI">su4:p3:value</topic>
|
298
293
|
<topic authority="su4:p4:authority" authorityURI="su4:p4:authorityURI" valueURI="su4:p4:valueURI">su4:p4:value</topic>
|
299
294
|
<topic authority="su4:p5:authority" authorityURI="su4:p5:authorityURI" valueURI="su4:p5:valueURI">su4:p5:value</topic>
|
300
295
|
</subject>
|
301
|
-
<subject authority="su5:authority" authorityURI="su5:authorityURI" valueURI="su5:valueURI"
|
296
|
+
<subject authority="su5:authority" authorityURI="su5:authorityURI" valueURI="su5:valueURI">
|
302
297
|
<topic authority="su5:p1:authority" authorityURI="su5:p1:authorityURI" valueURI="su5:p1:valueURI">su5:p1:value</topic>
|
303
298
|
<topic authority="su5:p2:authority" authorityURI="su5:p2:authorityURI" valueURI="su5:p2:valueURI">su5:p2:value</topic>
|
304
299
|
<topic authority="su5:p3:authority" authorityURI="su5:p3:authorityURI" valueURI="su5:p3:valueURI">su5:p3:value</topic>
|
@@ -318,10 +313,10 @@
|
|
318
313
|
<identifier type="id4:type" displayLabel="id4:displayLabel">id4:identifier</identifier>
|
319
314
|
<identifier type="id5:type" displayLabel="id5:displayLabel">id5:identifier</identifier>
|
320
315
|
<location>
|
321
|
-
<physicalLocation type="repository" authority="lo:authority" valueURI="lo:valueURI"
|
316
|
+
<physicalLocation type="repository" authority="lo:authority" valueURI="lo:valueURI">lo:repository</physicalLocation>
|
322
317
|
<physicalLocation type="discovery">lo:physicalLocation</physicalLocation>
|
323
318
|
<shelfLocator>lo:callNumber</shelfLocator>
|
324
|
-
<url>lo:purl</url>
|
319
|
+
<url usage="primary display">lo:purl</url>
|
325
320
|
</location>
|
326
321
|
<relatedItem type="ri1:type" displayLabel="ri1:displayLabel">
|
327
322
|
<titleInfo>
|
Binary file
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<xmlDocs xmlns="http://library.stanford.edu/xmlDocs" datetime="2016-12-01 08:40:10AM" sourceFile="location_url.xlsx">
|
3
|
+
<xmlDoc id="descMetadata" objectId="aa000aa0000">
|
4
|
+
<mods xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.loc.gov/mods/v3" version="3.5" xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-5.xsd">
|
5
|
+
<titleInfo>
|
6
|
+
<title>Location URL test</title>
|
7
|
+
</titleInfo>
|
8
|
+
<location>
|
9
|
+
<url usage="primary display">http://purl.stanford.edu/aa000aa0000</url>
|
10
|
+
<url displayLabel="Web archive">http://swap.stanford.edu</url>
|
11
|
+
</location>
|
12
|
+
</mods>
|
13
|
+
</xmlDoc>
|
14
|
+
</xmlDocs>
|
@@ -1,11 +1,7 @@
|
|
1
|
-
|
2
|
-
require 'modsulator'
|
3
|
-
require 'modsulator/validator'
|
4
|
-
|
5
|
-
describe Modsulator do
|
1
|
+
RSpec.describe Modsulator do
|
6
2
|
before :all do
|
7
3
|
@tmp_dir = File.expand_path("../../../tmp", __FILE__)
|
8
|
-
Dir.mkdir(@tmp_dir) unless Dir.
|
4
|
+
Dir.mkdir(@tmp_dir) unless Dir.exist?(@tmp_dir)
|
9
5
|
Dir.foreach(@tmp_dir) {|f| fn = File.join(@tmp_dir, f); File.delete(fn) if f != '.' && f != '..' && !File.directory?(fn)}
|
10
6
|
end
|
11
7
|
|
@@ -24,7 +20,8 @@ describe Modsulator do
|
|
24
20
|
'Heckrotte_ChartsOfCoastSurvey.xlsx' => 'Heckrotte_ChartsOfCoastSurvey.xml',
|
25
21
|
'SC1049_metadata.xlsx' => 'SC1049_metadata.xml',
|
26
22
|
'edition_physLoc_intmediatype.xlsx' => 'edition_physLoc_intmediatype.xml',
|
27
|
-
|
23
|
+
'filled_template_20160711.xlsx' => 'filled_template_20160711.xml',
|
24
|
+
'location_url.xlsx' => 'location_url.xml'
|
28
25
|
}.each do |testfile, results_file|
|
29
26
|
it "converts #{testfile} correctly to valid XML" do
|
30
27
|
generated_xml_string = Modsulator.new(File.join(FIXTURES_DIR, testfile), testfile).convert_rows()
|
data/spec/lib/modsulator_spec.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
|
2
|
-
require 'rubygems'
|
3
|
-
|
4
|
-
describe Modsulator do
|
1
|
+
RSpec.describe Modsulator do
|
5
2
|
describe "#validate_headers" do
|
6
3
|
subject { Modsulator.new File.join(FIXTURES_DIR, 'test_002.csv'), 'test_002.csv', template_string: "abc def ghi"}
|
7
4
|
let(:template_xml) { "abc def ghi"}
|
data/spec/spec_helper.rb
CHANGED
@@ -13,13 +13,20 @@
|
|
13
13
|
# The `.rspec` file also contains a few flags that are not defaults but that
|
14
14
|
# users commonly want.
|
15
15
|
|
16
|
-
require 'modsulator'
|
17
|
-
FIXTURES_DIR = File.expand_path("../fixtures", __FILE__)
|
18
|
-
XML_TEMPLATE = File.join(File.expand_path("../../lib/modsulator", __FILE__), "modsulator_template.xml")
|
19
|
-
|
20
16
|
require 'coveralls'
|
21
17
|
Coveralls.wear!
|
22
18
|
|
19
|
+
require 'rspec'
|
20
|
+
|
21
|
+
require 'modsulator'
|
22
|
+
require "modsulator/validator"
|
23
|
+
|
24
|
+
require 'equivalent-xml'
|
25
|
+
require 'equivalent-xml/rspec_matchers'
|
26
|
+
|
27
|
+
FIXTURES_DIR = File.expand_path('fixtures', __dir__)
|
28
|
+
|
29
|
+
|
23
30
|
#
|
24
31
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
25
32
|
RSpec.configure do |config|
|
@@ -46,9 +53,9 @@ RSpec.configure do |config|
|
|
46
53
|
mocks.verify_partial_doubles = true
|
47
54
|
end
|
48
55
|
|
49
|
-
# The settings below are suggested to provide a good initial experience
|
50
|
-
# with RSpec, but feel free to customize to your heart's content.
|
51
|
-
|
56
|
+
# The settings below are suggested to provide a good initial experience
|
57
|
+
# with RSpec, but feel free to customize to your heart's content.
|
58
|
+
|
52
59
|
# These two settings work together to allow you to limit a spec run
|
53
60
|
# to individual examples or groups you care about by tagging them with
|
54
61
|
# `:focus` metadata. When nothing is tagged with `:focus`, all examples
|
@@ -93,5 +100,4 @@ RSpec.configure do |config|
|
|
93
100
|
# test failures related to randomization by passing the same `--seed` value
|
94
101
|
# as the one that triggered the failure.
|
95
102
|
Kernel.srand config.seed
|
96
|
-
=end
|
97
103
|
end
|