modsulator 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +202 -0
- data/README.md +7 -0
- data/Rakefile +43 -0
- data/bin/modsulator +16 -0
- data/lib/doc/Modsulator.html +725 -0
- data/lib/doc/_index.html +101 -0
- data/lib/doc/class_list.html +58 -0
- data/lib/doc/css/common.css +1 -0
- data/lib/doc/css/full_list.css +57 -0
- data/lib/doc/css/style.css +339 -0
- data/lib/doc/file_list.html +57 -0
- data/lib/doc/frames.html +26 -0
- data/lib/doc/index.html +101 -0
- data/lib/doc/js/app.js +219 -0
- data/lib/doc/js/full_list.js +181 -0
- data/lib/doc/js/jquery.js +4 -0
- data/lib/doc/method_list.html +87 -0
- data/lib/doc/top-level-namespace.html +112 -0
- data/lib/modsulator.rb +193 -0
- data/lib/modsulator/mods-3-5.xsd +1463 -0
- data/lib/modsulator/modsulator.xsd +35 -0
- data/lib/modsulator/modsulator_sheet.rb +62 -0
- data/lib/modsulator/modsulator_template.xlsx +0 -0
- data/lib/modsulator/modsulator_template.xml +198 -0
- data/lib/modsulator/normalizer.rb +218 -0
- data/lib/modsulator/validator.rb +37 -0
- data/spec/features/modsulator_sheet_unit_spec.rb +18 -0
- data/spec/features/normalizer_unit_spec.rb +152 -0
- data/spec/features/process_template_spec.rb +29 -0
- data/spec/features/validator_unit_spec.rb +43 -0
- data/spec/fixtures/Fitch_Chavez.xlsx +0 -0
- data/spec/fixtures/Fitch_Chavez.xml +2806 -0
- data/spec/fixtures/Fitch_King.xlsx +0 -0
- data/spec/fixtures/Fitch_King.xml +2560 -0
- data/spec/fixtures/M1463_AV_manifest.xlsx +0 -0
- data/spec/fixtures/M1463_AV_manifest.xml +2373 -0
- data/spec/fixtures/Matter_manifest.csv +295 -0
- data/spec/fixtures/Matter_manifest.xml +3309 -0
- data/spec/fixtures/PosadaSpreadsheet.xlsx +0 -0
- data/spec/fixtures/PosadaSpreadsheet.xml +1259 -0
- data/spec/fixtures/ars0056_manifest.csv +1 -0
- data/spec/fixtures/ars0056_manifest.xml +9728 -0
- data/spec/fixtures/crowdsourcing_bridget_1.xlsx +0 -0
- data/spec/fixtures/crowdsourcing_bridget_1.xml +606 -0
- data/spec/fixtures/crowdsourcing_bridget_2.xlsx +0 -0
- data/spec/fixtures/crowdsourcing_bridget_2.xml +3433 -0
- data/spec/fixtures/filled_template.xlsx +0 -0
- data/spec/fixtures/invalid_crowdsourcing_bridget_1.xml +606 -0
- data/spec/fixtures/manifest_v0174.csv +34 -0
- data/spec/fixtures/manifest_v0174.xml +1026 -0
- data/spec/fixtures/roman_coins_mods_manifest.csv +176 -0
- data/spec/fixtures/roman_coins_mods_manifest.xml +3025 -0
- data/spec/fixtures/test:002.xml +63 -0
- data/spec/fixtures/test_002.csv +4 -0
- data/spec/fixtures/test_002.xlsx +0 -0
- data/spec/integration_tests/integration_spec.rb +40 -0
- data/spec/lib/modsulator_spec.rb +21 -0
- data/spec/spec_helper.rb +97 -0
- metadata +261 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
<?xml version="1.0"?>
|
2
|
+
<xmlDocs xmlns="http://library.stanford.edu/xmlDocs" datetime="2015-05-07 11:07:50AM" sourceFile="test_002.csv">
|
3
|
+
<xmlDoc id="descMetadata" objectId="">
|
4
|
+
<mods xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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>À la recherche du temps perdu</title>
|
7
|
+
</titleInfo>
|
8
|
+
<titleInfo type="translated">
|
9
|
+
<title>Remembrance of Things Past</title>
|
10
|
+
</titleInfo>
|
11
|
+
<titleInfo type="alternative">
|
12
|
+
<title>In Search of Lost Time</title>
|
13
|
+
</titleInfo>
|
14
|
+
<name type="personal" authority="naf" valueURI="http://lccn.loc.gov/n79021736">
|
15
|
+
<namePart>Proust, Marcel, 1871-1922</namePart>
|
16
|
+
<role>
|
17
|
+
<roleTerm type="code" authority="marcrelator">aut</roleTerm>
|
18
|
+
</role>
|
19
|
+
</name>
|
20
|
+
<name type="personal">
|
21
|
+
<namePart>Krutch, Joseph Wood</namePart>
|
22
|
+
<role>
|
23
|
+
<roleTerm type="text">translator</roleTerm>
|
24
|
+
</role>
|
25
|
+
</name>
|
26
|
+
<typeOfResource>text</typeOfResource>
|
27
|
+
<genre authority="marcgt">novel</genre>
|
28
|
+
<originInfo>
|
29
|
+
<place>
|
30
|
+
<placeTerm type="text">Paris</placeTerm>
|
31
|
+
</place>
|
32
|
+
<dateIssued keyDate="yes" encoding="iso8601">1871</dateIssued>
|
33
|
+
</originInfo>
|
34
|
+
<language>
|
35
|
+
<languageTerm authority="iso639-2b" type="code">fre</languageTerm>
|
36
|
+
</language>
|
37
|
+
<physicalDescription>
|
38
|
+
<form>print</form>
|
39
|
+
<extent>xvi, 387 p.. 28 cm.</extent>
|
40
|
+
</physicalDescription>
|
41
|
+
<abstract>A long hard night, punctuated by
|
42
|
+
raining sleep.</abstract>
|
43
|
+
<tableOfContents>v. 1. Swann's way. Within a budding grove. The Guermantes way -- v. 2. Cities of the plain. The captive. The sweet cheat gone.
|
44
|
+
The past recaptured</tableOfContents>
|
45
|
+
<note>Original edition with translators annotations.
|
46
|
+
|
47
|
+
Further annotations not anticipated.</note>
|
48
|
+
<note type="statement of responsibility">Introduction by C.K. Scott Moncrieff.
|
49
|
+
|
50
|
+
New paragraph added.</note>
|
51
|
+
<note>Translation of the seven-volume work, A la recherche du temps perdu.</note>
|
52
|
+
<subject authority="lcsh">
|
53
|
+
<topic>France--Social life and customs--Fiction</topic>
|
54
|
+
</subject>
|
55
|
+
<identifier type="isbn">057120760X</identifier>
|
56
|
+
<identifier type="isbn">9780571207602</identifier>
|
57
|
+
<location>
|
58
|
+
<physicalLocation type="repository" authority="lcsh">Repository22</physicalLocation>
|
59
|
+
<shelfLocator>VA.4221</shelfLocator>
|
60
|
+
</location>
|
61
|
+
</mods>
|
62
|
+
</xmlDoc>
|
63
|
+
</xmlDocs>
|
@@ -0,0 +1,4 @@
|
|
1
|
+
Identification,,Title #1 (main title),,,,,,,Title #2,,,,,,,,#2,Title #3,,,,,,,,#3,Name #1,,,,role for name #1,,,,Name #2,,,,role for name #2,,,,,#2,Name #3,,,,role for name #3,,,,#3,Name #4,,,,role for name #4,,,,#4,Name #5,,,,role for name #5,,,,#5,Type of Resource #1,,Type of Resource #2,#2,Type of Resource #3,#3,Genre #1,,,,Genre #2,,,,#2,Genre #3,,,,#3,Origin (dates),,,,,,"Origin (publisher, place)",,,,,Language #1,,,,Language #2,,,,#2,Language #3,,,,#3,Physical Description,,,,,Abstract,,Table of contents,,Note #1,,,Note #2,,,#2,Note #3,,,#3,Note #4,,,#4,Note #5,,,#5,"Subject, name #1",(part 1),,,,,(part 2),,,,(part 3),,,,"Subject, name #2",(part 1),,,,,(part 2),,,,(part 3),,,,#2,"Subject, name #3",(part 1),,,,,(part 2),,,,(part 3),,,,#3,"Subject, name #4",(part 1),,,,,(part 2),,,,(part 3),,,,#4,"Subject, name #5",(part 1),,,,,(part 2),,,,(part 3),,,,#5,"Subject, other #1",(part 1),,,,(part 2),,,,(part 3),,,,"Subject, other #2",(part 1),,,,(part 2),,,,(part 3),,,,#2,"Subject, other #3",(part 1),,,,(part 2),,,,(part 3),,,,#3,"Subject, other #4",(part 1),,,,(part 2),,,,(part 3),,,,#4,"Subject, other #5",(part 1),,,,(part 2),,,,(part 3),,,,#5,"Subject, cartographics",,,"Location, repository",,,"Location, call number",Identifier #1,,,Identifier #2,,,#2,Identifier #3,,,#3,Identifier #4,,,#4,Identifier #5,,,#5,Related Item,,,,,,,,,,
|
2
|
+
,,uniform,translated,abbreviated,alternative,,,,,,,,,,,,,,,,,,,,,,personal,corporate,conference,family,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,topic,genre,geographic,temporal,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,topic,,,,,,,,,,,,,, ,,,,,,,,,,,,,,, ,,,,,,,,,,,,, ,,,,,,,,,,,,,, ,,,,,,,,,,,,,, ,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,preceding,succeeding,original,host,constituent,series,otherVersion,otherFormat,isReferencedBy,references,reviewOf
|
3
|
+
druid,sourceId,ti1:nonSort,ti1:title,ti1:subTitle,ti1:partNumber,ti1:partName,ti1:authority,ti1:valueURI,ti2:type,ti2:nonSort,ti2:title,ti2:subTitle,ti2:partNumber,ti2:partName,ti2:authority,ti2:valueURI,,ti3:type,ti3:nonSort,ti3:title,ti3:subTitle,ti3:partNumber,ti3:partName,ti3:authority,ti3:valueURI,,na1:namePart,na1:type,na1:authority,na1:valueURI,ro1:roleCode,ro1:roleText,ro1:authority,ro1:valueURI,na2:namePart,na2:type,na2:authority,na2:valueURI,ro2:roleCode,ro2:roleText,ro2:authority,ro2:valueURI,ro2:valueURI,,na3:namePart,na3:type,na3:authority,na3:valueURI,ro3:roleCode,ro3:roleText,ro3:authority,ro3:valueURI,,na4:namePart,na4:type,na4:authority,na4:valueURI,ro4:roleCode,ro4:roleText,ro4:authority,ro4:valueURI,,na5:namePart,na5:type,na5:authority,na5:valueURI,ro5:roleCode,ro5:roleText,ro5:authority,ro5:valueURI,,ty1:typeOfResource,ty1:manuscript,ty2:typeOfResource,,ty3:typeOfResource,,ge1:genre,ge1:type,ge1:authority,ge1:valueURI,ge2:genre,ge2:type,ge2:authority,ge2:valueURI,,ge3:genre,ge3:type,ge3:authority,ge3:valueURI,,dt:dateCreated,dt:dateCreated2,dt:dateIssued,dt:dateIssued2,dt:encoding,dt:qualifier,or:publisher,pl:placeCode,pl:placeText,pl:authority,pl:valueURI,la1:code,la1:text,la1:authority,la1:valueURI,la2:code,la2:text,la2:authority,la2:valueURI,,la3:code,la3:text,la3:authority,la3:valueURI,,ph1:form,ph1:extent,ph1:digitalOrigin,ph1:note,ph1:displayLabel,ab:abstract,ab:displayLabel,tc:tableOfContents,tc:displayLabel,no1:note,no1:type,no1:displayLabel,no2:note,no2:type,no2:displayLabel,,no3:note,no3:type,no3:displayLabel,,no4:note,no4:type,no4:displayLabel,,no5:note,no5:type,no5:displayLabel,,sn1:authority,sn1:p1:name,sn1:p1:nameType,sn1:p1:title,sn1:p1:authority,sn1:p1:valueURI,sn1:p2:type,sn1:p2:value,sn1:p2:authority,sn1:p2:valueURI,sn1:p3:type,sn1:p3:value,sn1:p3:authority,sn1:p3:valueURI,sn2:authority,sn2:p1:name,sn2:p1:nameType,sn2:p1:title,sn2:p1:authority,sn2:p1:valueURI,sn2:p2:type,sn2:p2:value,sn2:p2:authority,sn2:p2:valueURI,sn2:p3:type,sn2:p3:value,sn2:p3:authority,sn2:p3:valueURI,,sn3:authority,sn3:p1:name,sn3:p1:nameType,sn3:p1:title,sn3:p1:authority,sn3:p1:valueURI,sn3:p2:type,sn3:p2:value,sn3:p2:authority,sn3:p2:valueURI,sn3:p3:type,sn3:p3:value,sn3:p3:authority,sn3:p3:valueURI,,sn4:authority,sn4:p1:name,sn4:p1:nameType,sn4:p1:title,sn4:p1:authority,sn4:p1:valueURI,sn4:p2:type,sn4:p2:value,sn4:p2:authority,sn4:p2:valueURI,sn4:p3:type,sn4:p3:value,sn4:p3:authority,sn4:p3:valueURI,,sn5:authority,sn5:p1:name,sn5:p1:nameType,sn5:p1:title,sn5:p1:authority,sn5:p1:valueURI,sn5:p2:type,sn5:p2:value,sn5:p2:authority,sn5:p2:valueURI,sn5:p3:type,sn5:p3:value,sn5:p3:authority,sn5:p3:valueURI,,su1:authority,su1:p1:type,su1:p1:value,su1:p1:authority,su1:p1:valueURI,su1:p2:type,su1:p2:value,su1:p2:authority,su1:p2:valueURI,su1:p3:type,su1:p3:value,su1:p3:authority,su1:p3:valueURI,su2:authority,su2:p1:type,su2:p1:value,su2:p1:authority,su2:p1:valueURI,su2:p2:type,su2:p2:value,su2:p2:authority,su2:p2:valueURI,su2:p3:type,su2:p3:value,su2:p3:authority,su2:p3:valueURI,,su3:authority,su3:p1:type,su3:p1:value,su3:p1:authority,su3:p1:valueURI,su3:p2:type,su3:p2:value,su3:p2:authority,su3:p2:valueURI,su3:p3:type,su3:p3:value,su3:p3:authority,su3:p3:valueURI,,su4:authority,su4:p1:type,su4:p1:value,su4:p1:authority,su4:p1:valueURI,su4:p2:type,su4:p2:value,su4:p2:authority,su4:p2:valueURI,su4:p3:type,su4:p3:value,su4:p3:authority,su4:p3:valueURI,,su5:authority,su5:p1:type,su5:p1:value,su5:p1:authority,su5:p1:valueURI,su5:p2:type,su5:p2:value,su5:p2:authority,su5:p2:valueURI,su5:p3:type,su5:p3:value,su5:p3:authority,su5:p3:valueURI,,sc1:scale,sc1:coordinates,sc1:projection,lo:repository,lo:authority,lo:valueURI,lo:callNumber,id1:identifier,id1:type,id1:displayLabel,id2:identifier,id2:type,id2:displayLabel,,id3:identifier,id3:type,id3:displayLabel,,id4:identifier,id4:type,id4:displayLabel,,id5:identifier,id5:type,id5:displayLabel,,ri1:type,ri1:title,ri1:url,,,,,,,,
|
4
|
+
,test:002,,À la recherche du temps perdu,,,,,,translated,,Remembrance of Things Past,,,,,,,alternative,,In Search of Lost Time,,,,,,,"Proust, Marcel, 1871-1922",personal,naf,http://lccn.loc.gov/n79021736,aut,,marcrelator,,"Krutch, Joseph Wood",personal,,,,translator,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,text,,,,,,novel,,marcgt,,,,,,,,,,,,,,1871,,iso8601,,,,Paris,,,fre,,iso639-2b,,,,,,,,,,,,print,"xvi, 387 p.. 28 cm.",,,,"A long hard night, punctuated by <br/> raining sleep.",,v. 1. Swann's way. Within a budding grove. The Guermantes way -- v. 2. Cities of the plain. The captive. The sweet cheat gone. <br>The past recaptured,,Original edition with translators annotations. <p/>Further annotations not anticipated.,,,Introduction by C.K. Scott Moncrieff.<p>New paragraph added.,statement of responsibility,,,"Translation of the seven-volume work, A la recherche du temps perdu.",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,lcsh,topic,France--Social life and customs--Fiction,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,Repository22,lcsh,,VA.4221,057120760X,isbn,,9780571207602,isbn,,,,,,,,,,,,,,,,,,,,,,,,,
|
Binary file
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'equivalent-xml'
|
2
|
+
require 'modsulator'
|
3
|
+
require 'modsulator/validator'
|
4
|
+
|
5
|
+
describe Modsulator do
|
6
|
+
before :all do
|
7
|
+
@tmp_dir = File.expand_path("../../../tmp", __FILE__)
|
8
|
+
Dir.mkdir(@tmp_dir) unless Dir.exists?(@tmp_dir)
|
9
|
+
Dir.foreach(@tmp_dir) {|f| fn = File.join(@tmp_dir, f); File.delete(fn) if f != '.' && f != '..' && !File.directory?(fn)}
|
10
|
+
end
|
11
|
+
|
12
|
+
describe "generates and validates" do
|
13
|
+
{
|
14
|
+
'Fitch_Chavez.xlsx' => 'Fitch_Chavez.xml',
|
15
|
+
'Fitch_King.xlsx' => 'Fitch_King.xml',
|
16
|
+
'M1463_AV_manifest.xlsx' => 'M1463_AV_manifest.xml',
|
17
|
+
'Matter_manifest.csv' => 'Matter_manifest.xml',
|
18
|
+
'PosadaSpreadsheet.xlsx' => 'PosadaSpreadsheet.xml',
|
19
|
+
'ars0056_manifest.csv' => 'ars0056_manifest.xml',
|
20
|
+
'manifest_v0174.csv' => 'manifest_v0174.xml',
|
21
|
+
'roman_coins_mods_manifest.csv' => 'roman_coins_mods_manifest.xml',
|
22
|
+
'crowdsourcing_bridget_1.xlsx' => 'crowdsourcing_bridget_1.xml',
|
23
|
+
'crowdsourcing_bridget_2.xlsx' => 'crowdsourcing_bridget_2.xml'
|
24
|
+
}.each do |testfile, results_file|
|
25
|
+
it "converts #{testfile} correctly to valid XML" do
|
26
|
+
generated_xml_string = Modsulator.new(File.join(FIXTURES_DIR, testfile), testfile).convert_rows()
|
27
|
+
error_list = Validator.new(File.expand_path("lib/modsulator/modsulator.xsd")).validate_xml_string(generated_xml_string)
|
28
|
+
expect(error_list.length()).to eq(0)
|
29
|
+
|
30
|
+
generated_xml = Nokogiri::XML(generated_xml_string)
|
31
|
+
expected_xml = Nokogiri::XML(File.read(File.join(FIXTURES_DIR, results_file)))
|
32
|
+
expect(generated_xml).to be_equivalent_to(expected_xml).ignoring_attr_values('datetime')
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
after :all do
|
38
|
+
Dir.foreach(@tmp_dir) {|f| File.delete(File.join(@tmp_dir, f)) if f != '.' && f != '..' && !File.directory?(f)}
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rubygems'
|
3
|
+
|
4
|
+
describe Modsulator do
|
5
|
+
describe "#validate_headers" do
|
6
|
+
subject { Modsulator.new File.join(FIXTURES_DIR, 'test_002.csv'), 'test_002.csv', template_string: "abc def ghi"}
|
7
|
+
let(:template_xml) { "abc def ghi"}
|
8
|
+
it "should include headers not in the template string" do
|
9
|
+
expect(subject.validate_headers(["abc", "phi"])).not_to include "abc"
|
10
|
+
expect(subject.validate_headers(["abc", "phi"])).to include "phi"
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe "#get_template_spreadsheet" do
|
15
|
+
it "should return the correct spreadsheet" do
|
16
|
+
downloaded_binary_string = Modsulator.get_template_spreadsheet
|
17
|
+
expected_binary_string = IO.read(File.join(File.expand_path("../../../lib/modsulator/", __FILE__), "modsulator_template.xlsx"), mode: 'rb')
|
18
|
+
expect(downloaded_binary_string).to eq(expected_binary_string)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
# This file was generated by the `rspec --init` command. Conventionally, all
|
2
|
+
# specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
|
3
|
+
# The generated `.rspec` file contains `--require spec_helper` which will cause this
|
4
|
+
# file to always be loaded, without a need to explicitly require it in any files.
|
5
|
+
#
|
6
|
+
# Given that it is always loaded, you are encouraged to keep this file as
|
7
|
+
# light-weight as possible. Requiring heavyweight dependencies from this file
|
8
|
+
# will add to the boot time of your test suite on EVERY test run, even for an
|
9
|
+
# individual file that may not need all of that loaded. Instead, consider making
|
10
|
+
# a separate helper file that requires the additional dependencies and performs
|
11
|
+
# the additional setup, and require it from the spec files that actually need it.
|
12
|
+
#
|
13
|
+
# The `.rspec` file also contains a few flags that are not defaults but that
|
14
|
+
# users commonly want.
|
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
|
+
require 'coveralls'
|
21
|
+
Coveralls.wear!
|
22
|
+
|
23
|
+
#
|
24
|
+
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
25
|
+
RSpec.configure do |config|
|
26
|
+
# rspec-expectations config goes here. You can use an alternate
|
27
|
+
# assertion/expectation library such as wrong or the stdlib/minitest
|
28
|
+
# assertions if you prefer.
|
29
|
+
config.expect_with :rspec do |expectations|
|
30
|
+
# This option will default to `true` in RSpec 4. It makes the `description`
|
31
|
+
# and `failure_message` of custom matchers include text for helper methods
|
32
|
+
# defined using `chain`, e.g.:
|
33
|
+
# be_bigger_than(2).and_smaller_than(4).description
|
34
|
+
# # => "be bigger than 2 and smaller than 4"
|
35
|
+
# ...rather than:
|
36
|
+
# # => "be bigger than 2"
|
37
|
+
expectations.include_chain_clauses_in_custom_matcher_descriptions = true
|
38
|
+
end
|
39
|
+
|
40
|
+
# rspec-mocks config goes here. You can use an alternate test double
|
41
|
+
# library (such as bogus or mocha) by changing the `mock_with` option here.
|
42
|
+
config.mock_with :rspec do |mocks|
|
43
|
+
# Prevents you from mocking or stubbing a method that does not exist on
|
44
|
+
# a real object. This is generally recommended, and will default to
|
45
|
+
# `true` in RSpec 4.
|
46
|
+
mocks.verify_partial_doubles = true
|
47
|
+
end
|
48
|
+
|
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
|
+
=begin
|
52
|
+
# These two settings work together to allow you to limit a spec run
|
53
|
+
# to individual examples or groups you care about by tagging them with
|
54
|
+
# `:focus` metadata. When nothing is tagged with `:focus`, all examples
|
55
|
+
# get run.
|
56
|
+
config.filter_run :focus
|
57
|
+
config.run_all_when_everything_filtered = true
|
58
|
+
|
59
|
+
# Limits the available syntax to the non-monkey patched syntax that is recommended.
|
60
|
+
# For more details, see:
|
61
|
+
# - http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax
|
62
|
+
# - http://teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
|
63
|
+
# - http://myronmars.to/n/dev-blog/2014/05/notable-changes-in-rspec-3#new__config_option_to_disable_rspeccore_monkey_patching
|
64
|
+
config.disable_monkey_patching!
|
65
|
+
|
66
|
+
# This setting enables warnings. It's recommended, but in some cases may
|
67
|
+
# be too noisy due to issues in dependencies.
|
68
|
+
config.warnings = true
|
69
|
+
|
70
|
+
# Many RSpec users commonly either run the entire suite or an individual
|
71
|
+
# file, and it's useful to allow more verbose output when running an
|
72
|
+
# individual spec file.
|
73
|
+
if config.files_to_run.one?
|
74
|
+
# Use the documentation formatter for detailed output,
|
75
|
+
# unless a formatter has already been configured
|
76
|
+
# (e.g. via a command-line flag).
|
77
|
+
config.default_formatter = 'doc'
|
78
|
+
end
|
79
|
+
|
80
|
+
# Print the 10 slowest examples and example groups at the
|
81
|
+
# end of the spec run, to help surface which specs are running
|
82
|
+
# particularly slow.
|
83
|
+
config.profile_examples = 10
|
84
|
+
|
85
|
+
# Run specs in random order to surface order dependencies. If you find an
|
86
|
+
# order dependency and want to debug it, you can fix the order by providing
|
87
|
+
# the seed, which is printed after each run.
|
88
|
+
# --seed 1234
|
89
|
+
config.order = :random
|
90
|
+
|
91
|
+
# Seed global randomization in this process using the `--seed` CLI option.
|
92
|
+
# Setting this allows you to use `--seed` to deterministically reproduce
|
93
|
+
# test failures related to randomization by passing the same `--seed` value
|
94
|
+
# as the one that triggered the failure.
|
95
|
+
Kernel.srand config.seed
|
96
|
+
=end
|
97
|
+
end
|
metadata
ADDED
@@ -0,0 +1,261 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: modsulator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.6
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tommy Ingulfsen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-26 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: roo
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: equivalent-xml
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.6.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.6.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: nokogiri
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activesupport
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '3.0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '3.0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: yard
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: coveralls
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: ruby-lint
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description: Tools and libraries for working with metadata spreadsheets and MODS.
|
140
|
+
email: tommyi@stanford.edu
|
141
|
+
executables:
|
142
|
+
- modsulator
|
143
|
+
extensions: []
|
144
|
+
extra_rdoc_files: []
|
145
|
+
files:
|
146
|
+
- LICENSE
|
147
|
+
- README.md
|
148
|
+
- Rakefile
|
149
|
+
- bin/modsulator
|
150
|
+
- lib/doc/Modsulator.html
|
151
|
+
- lib/doc/_index.html
|
152
|
+
- lib/doc/class_list.html
|
153
|
+
- lib/doc/css/common.css
|
154
|
+
- lib/doc/css/full_list.css
|
155
|
+
- lib/doc/css/style.css
|
156
|
+
- lib/doc/file_list.html
|
157
|
+
- lib/doc/frames.html
|
158
|
+
- lib/doc/index.html
|
159
|
+
- lib/doc/js/app.js
|
160
|
+
- lib/doc/js/full_list.js
|
161
|
+
- lib/doc/js/jquery.js
|
162
|
+
- lib/doc/method_list.html
|
163
|
+
- lib/doc/top-level-namespace.html
|
164
|
+
- lib/modsulator.rb
|
165
|
+
- lib/modsulator/mods-3-5.xsd
|
166
|
+
- lib/modsulator/modsulator.xsd
|
167
|
+
- lib/modsulator/modsulator_sheet.rb
|
168
|
+
- lib/modsulator/modsulator_template.xlsx
|
169
|
+
- lib/modsulator/modsulator_template.xml
|
170
|
+
- lib/modsulator/normalizer.rb
|
171
|
+
- lib/modsulator/validator.rb
|
172
|
+
- spec/features/modsulator_sheet_unit_spec.rb
|
173
|
+
- spec/features/normalizer_unit_spec.rb
|
174
|
+
- spec/features/process_template_spec.rb
|
175
|
+
- spec/features/validator_unit_spec.rb
|
176
|
+
- spec/fixtures/Fitch_Chavez.xlsx
|
177
|
+
- spec/fixtures/Fitch_Chavez.xml
|
178
|
+
- spec/fixtures/Fitch_King.xlsx
|
179
|
+
- spec/fixtures/Fitch_King.xml
|
180
|
+
- spec/fixtures/M1463_AV_manifest.xlsx
|
181
|
+
- spec/fixtures/M1463_AV_manifest.xml
|
182
|
+
- spec/fixtures/Matter_manifest.csv
|
183
|
+
- spec/fixtures/Matter_manifest.xml
|
184
|
+
- spec/fixtures/PosadaSpreadsheet.xlsx
|
185
|
+
- spec/fixtures/PosadaSpreadsheet.xml
|
186
|
+
- spec/fixtures/ars0056_manifest.csv
|
187
|
+
- spec/fixtures/ars0056_manifest.xml
|
188
|
+
- spec/fixtures/crowdsourcing_bridget_1.xlsx
|
189
|
+
- spec/fixtures/crowdsourcing_bridget_1.xml
|
190
|
+
- spec/fixtures/crowdsourcing_bridget_2.xlsx
|
191
|
+
- spec/fixtures/crowdsourcing_bridget_2.xml
|
192
|
+
- spec/fixtures/filled_template.xlsx
|
193
|
+
- spec/fixtures/invalid_crowdsourcing_bridget_1.xml
|
194
|
+
- spec/fixtures/manifest_v0174.csv
|
195
|
+
- spec/fixtures/manifest_v0174.xml
|
196
|
+
- spec/fixtures/roman_coins_mods_manifest.csv
|
197
|
+
- spec/fixtures/roman_coins_mods_manifest.xml
|
198
|
+
- spec/fixtures/test:002.xml
|
199
|
+
- spec/fixtures/test_002.csv
|
200
|
+
- spec/fixtures/test_002.xlsx
|
201
|
+
- spec/integration_tests/integration_spec.rb
|
202
|
+
- spec/lib/modsulator_spec.rb
|
203
|
+
- spec/spec_helper.rb
|
204
|
+
homepage: https://github.com/sul-dlss/modsulator
|
205
|
+
licenses:
|
206
|
+
- Apache-2.0
|
207
|
+
metadata: {}
|
208
|
+
post_install_message:
|
209
|
+
rdoc_options: []
|
210
|
+
require_paths:
|
211
|
+
- lib
|
212
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
213
|
+
requirements:
|
214
|
+
- - ">="
|
215
|
+
- !ruby/object:Gem::Version
|
216
|
+
version: '0'
|
217
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - ">="
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '0'
|
222
|
+
requirements: []
|
223
|
+
rubyforge_project:
|
224
|
+
rubygems_version: 2.4.6
|
225
|
+
signing_key:
|
226
|
+
specification_version: 4
|
227
|
+
summary: Produces (Stanford) MODS XML from spreadsheets.
|
228
|
+
test_files:
|
229
|
+
- spec/features/modsulator_sheet_unit_spec.rb
|
230
|
+
- spec/features/normalizer_unit_spec.rb
|
231
|
+
- spec/features/process_template_spec.rb
|
232
|
+
- spec/features/validator_unit_spec.rb
|
233
|
+
- spec/fixtures/ars0056_manifest.csv
|
234
|
+
- spec/fixtures/ars0056_manifest.xml
|
235
|
+
- spec/fixtures/crowdsourcing_bridget_1.xlsx
|
236
|
+
- spec/fixtures/crowdsourcing_bridget_1.xml
|
237
|
+
- spec/fixtures/crowdsourcing_bridget_2.xlsx
|
238
|
+
- spec/fixtures/crowdsourcing_bridget_2.xml
|
239
|
+
- spec/fixtures/filled_template.xlsx
|
240
|
+
- spec/fixtures/Fitch_Chavez.xlsx
|
241
|
+
- spec/fixtures/Fitch_Chavez.xml
|
242
|
+
- spec/fixtures/Fitch_King.xlsx
|
243
|
+
- spec/fixtures/Fitch_King.xml
|
244
|
+
- spec/fixtures/invalid_crowdsourcing_bridget_1.xml
|
245
|
+
- spec/fixtures/M1463_AV_manifest.xlsx
|
246
|
+
- spec/fixtures/M1463_AV_manifest.xml
|
247
|
+
- spec/fixtures/manifest_v0174.csv
|
248
|
+
- spec/fixtures/manifest_v0174.xml
|
249
|
+
- spec/fixtures/Matter_manifest.csv
|
250
|
+
- spec/fixtures/Matter_manifest.xml
|
251
|
+
- spec/fixtures/PosadaSpreadsheet.xlsx
|
252
|
+
- spec/fixtures/PosadaSpreadsheet.xml
|
253
|
+
- spec/fixtures/roman_coins_mods_manifest.csv
|
254
|
+
- spec/fixtures/roman_coins_mods_manifest.xml
|
255
|
+
- spec/fixtures/test:002.xml
|
256
|
+
- spec/fixtures/test_002.csv
|
257
|
+
- spec/fixtures/test_002.xlsx
|
258
|
+
- spec/integration_tests/integration_spec.rb
|
259
|
+
- spec/lib/modsulator_spec.rb
|
260
|
+
- spec/spec_helper.rb
|
261
|
+
has_rdoc:
|