stanford-mods 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +22 -0
- data/.rvmrc +1 -0
- data/.travis.yml +9 -0
- data/.yardopts +3 -0
- data/Gemfile +4 -0
- data/LICENSE +5 -0
- data/README.rdoc +40 -0
- data/Rakefile +46 -0
- data/config/mappings_hash.rb +79 -0
- data/lib/stanford-mods/mappings.rb +153 -0
- data/lib/stanford-mods/version.rb +5 -0
- data/lib/stanford-mods.rb +18 -0
- data/stanford-mods.gemspec +37 -0
- metadata +182 -0
data/.gitignore
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.bundle
|
4
|
+
.config
|
5
|
+
.yardoc
|
6
|
+
.travis
|
7
|
+
Gemfile.lock
|
8
|
+
InstalledFiles
|
9
|
+
_yardoc
|
10
|
+
coverage
|
11
|
+
doc/
|
12
|
+
lib/bundler/man
|
13
|
+
pkg
|
14
|
+
rdoc
|
15
|
+
spec/reports
|
16
|
+
test/tmp
|
17
|
+
test/version_tmp
|
18
|
+
tmp
|
19
|
+
.DS_Store
|
20
|
+
*.tmproj
|
21
|
+
tmtags
|
22
|
+
.idea/*
|
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use ruby-1.9.3@stanford-mods --create
|
data/.travis.yml
ADDED
data/.yardopts
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,5 @@
|
|
1
|
+
Copyright (c) 20XX-2012. The Board of Trustees of the Leland Stanford Junior University. All rights reserved.
|
2
|
+
|
3
|
+
Redistribution and use of this distribution in source and binary forms, with or without modification, are permitted provided that: The above copyright notice and this permission notice appear in all copies and supporting documentation; The name, identifiers, and trademarks of The Board of Trustees of the Leland Stanford Junior University are not used in advertising or publicity without the express prior written permission of The Board of Trustees of the Leland Stanford Junior University; Recipients acknowledge that this distribution is made available as a research courtesy, "as is", potentially with defects, without any obligation on the part of The Board of Trustees of the Leland Stanford Junior University to provide support, services, or repair;
|
4
|
+
|
5
|
+
THE BOARD OF TRUSTEES OF THE LELAND STANFORD JUNIOR UNIVERSITY DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD TO THIS SOFTWARE, INCLUDING WITHOUT LIMITATION ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, AND IN NO EVENT SHALL THE BOARD OF TRUSTEES OF THE LELAND STANFORD JUNIOR UNIVERSITY BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, TORT (INCLUDING NEGLIGENCE) OR STRICT LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
= Stanford::Mods
|
2
|
+
|
3
|
+
{<img src="https://secure.travis-ci.org/sul-dlss/stanford-mods.png?branch=master" alt="Build Status" />}[http://travis-ci.org/sul-dlss/stanford-mods]
|
4
|
+
|
5
|
+
A Gem with Stanford specific wranglings of MODS (Metadata Object Description Schema) metadata from DOR, the Stanford Digital Object Repository.
|
6
|
+
|
7
|
+
Source code at https://github.com/sul-dlss/stanford-mods/
|
8
|
+
|
9
|
+
Generated API docs at http://rubydoc.info/github/sul-dlss/stanford-mods/
|
10
|
+
|
11
|
+
== Installation
|
12
|
+
|
13
|
+
Add this line to your application's Gemfile:
|
14
|
+
|
15
|
+
gem 'stanford-mods'
|
16
|
+
|
17
|
+
And then execute:
|
18
|
+
|
19
|
+
$ bundle
|
20
|
+
|
21
|
+
Or install it yourself as:
|
22
|
+
|
23
|
+
$ gem install stanford-mods
|
24
|
+
|
25
|
+
== Usage
|
26
|
+
|
27
|
+
TODO: Write usage instructions here
|
28
|
+
|
29
|
+
## Contributing
|
30
|
+
|
31
|
+
1. Fork it
|
32
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
33
|
+
3. Write code and tests.
|
34
|
+
4. Commit your changes (`git commit -am 'Added some feature'`)
|
35
|
+
5. Push to the branch (`git push origin my-new-feature`)
|
36
|
+
6. Create new Pull Request
|
37
|
+
|
38
|
+
== Releases
|
39
|
+
|
40
|
+
0.0.1
|
data/Rakefile
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
|
4
|
+
require 'rake'
|
5
|
+
require 'bundler'
|
6
|
+
|
7
|
+
require 'rspec/core/rake_task'
|
8
|
+
require 'yard'
|
9
|
+
require 'yard/rake/yardoc_task'
|
10
|
+
|
11
|
+
begin
|
12
|
+
Bundler.setup(:default, :development)
|
13
|
+
rescue Bundler::BundlerError => e
|
14
|
+
$stderr.puts e.message
|
15
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
16
|
+
exit e.status_code
|
17
|
+
end
|
18
|
+
|
19
|
+
task :default => :ci
|
20
|
+
|
21
|
+
desc "run continuous integration suite (tests, coverage, docs)"
|
22
|
+
task :ci => [:rspec, :doc]
|
23
|
+
|
24
|
+
task :spec => :rspec
|
25
|
+
|
26
|
+
RSpec::Core::RakeTask.new(:rspec) do |spec|
|
27
|
+
spec.rspec_opts = ["-c", "-f progress", "-r ./spec/spec_helper.rb"]
|
28
|
+
end
|
29
|
+
|
30
|
+
# Use yard to build docs
|
31
|
+
begin
|
32
|
+
project_root = File.expand_path(File.dirname(__FILE__) + "/../..")
|
33
|
+
doc_dest_dir = File.join(project_root, 'doc')
|
34
|
+
|
35
|
+
YARD::Rake::YardocTask.new(:doc) do |yt|
|
36
|
+
yt.files = Dir.glob(File.join(project_root, 'lib', '**', '*.rb')) +
|
37
|
+
[ File.join(project_root, 'README.rdoc') ]
|
38
|
+
yt.options = ['--output-dir', doc_dest_dir, '--readme', 'README.rdoc', '--title', 'Stanford-Mods Documentation']
|
39
|
+
end
|
40
|
+
rescue LoadError
|
41
|
+
desc "Generate YARD Documentation"
|
42
|
+
task :doc do
|
43
|
+
abort "Please install the YARD gem to generate rdoc."
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# key: method name
|
2
|
+
# value: xpath
|
3
|
+
name_to_xpath = {
|
4
|
+
# are we deliberately seeking nested values, or just incidentally?
|
5
|
+
# some string, some array
|
6
|
+
# some return nil if missing -- do all?
|
7
|
+
|
8
|
+
# TOP_LEVEL_SIMPLE
|
9
|
+
'abstract' => '//abstract/text()', # .to_s
|
10
|
+
'access_condition' => '//accessCondition/text()', # .to_s
|
11
|
+
'genre' => '//genre/text()', #.to_s as array
|
12
|
+
'type_of_resource' => '//typeOfResource/text()', # .to_s
|
13
|
+
|
14
|
+
# name
|
15
|
+
'corporate_authors' => '//mods/name[@type="corporate"]', # .ea .xpath('namePart').collect{ |a| a.text }.join(' ')
|
16
|
+
'personal_authors' => '//mods/name[@type="personal"]', # .ea .xpath('namePart').collect{ |a| a.text }.join(' ')
|
17
|
+
|
18
|
+
# titleInfo
|
19
|
+
'title' => '//mods/titleInfo[not(@type="alternative")]', # .first, extract_title_from_title_info(node)
|
20
|
+
'subtitle' => '//mods/titleInfo/subTitle' #.first.text
|
21
|
+
'full_title' => '//mods/titleInfo', # .first, extract_full_title_from_title_info(node)
|
22
|
+
'title_variant' => '//mods/titleInfo[@type="alternative"]', # .first, extract_title_from_title_info(node)
|
23
|
+
|
24
|
+
# language
|
25
|
+
'language_codes' => "//language/languageTerm[@authority='iso639-2b'][@type='code']/text()",
|
26
|
+
'language_words' => "//language/languageTerm[@type='text']/text()|//language/text()",
|
27
|
+
|
28
|
+
# physicalDescription
|
29
|
+
'physical_description_extent' => '//physicalDescription/extent/text()', # .to_s
|
30
|
+
'physical_description_form' => '//physicalDescription/form/text()', # .to_s
|
31
|
+
'physical_description_media_type' => '//physicalDescription/internetMediaType/text()', # .to_s
|
32
|
+
|
33
|
+
# location
|
34
|
+
'physical_location' => '//location/physicalLocation/text()', # .to_s
|
35
|
+
'location_url' => '//location/url/text()', # .to_s
|
36
|
+
|
37
|
+
# relatedItem
|
38
|
+
'relateditem_location_url' => '//relatedItem/location/url/text()', # .to_s
|
39
|
+
'relateditem_title' => '//relatedItem/titleInfo/title/text()', # .to_s
|
40
|
+
|
41
|
+
# originInfo
|
42
|
+
'create_start_date' => '//originInfo/dateCreated[@point="start"]/text()', #.to_s - comes from passed node, not root
|
43
|
+
'create_end_date' => '//originInfo/dateCreated[@point="end"]/text()', #.to_s - comes from passed node, not root
|
44
|
+
'date_issued' => '//originInfo/dateIssued/text()', #.to_s - comes from passed node, not root
|
45
|
+
'place_terms' => '//originInfo/place/placeTerm/text()', # .to_s put in array, then .flatten.uniq
|
46
|
+
'publishers' => '//originInfo/publisher/text()', # .to_s put in array, then .flatten.uniq
|
47
|
+
# pub_date / pub_year
|
48
|
+
|
49
|
+
# subject
|
50
|
+
'subject_names' => '//subject/name', # .ea .xpath('namePart/text().to_a.join(' ') then .uniq
|
51
|
+
'subject_topics' => '//subject/topic/text()', # .ea .to_s as array then .uniq
|
52
|
+
'subject_geographic' => '//subject/geographic/text()', # .ea .to_s as array then .uniq
|
53
|
+
'subject_temporal' => '//subject/temporal/text()', # .ea .to_s as array then .uniq
|
54
|
+
# # TODO: subject/temporal can be either a string or an iso8601 date
|
55
|
+
# At some point we may need to handle date parsing here, but as a first
|
56
|
+
# pass, just assume everything is a string
|
57
|
+
# if mt.xpath('@encoding="iso8601"')
|
58
|
+
# begin
|
59
|
+
# d = DateTime.iso8601(mt.xpath('text()').to_s)
|
60
|
+
# rescue
|
61
|
+
# puts "#{mt.xpath('text()').to_s} is not a valid iso8601 date"
|
62
|
+
# end
|
63
|
+
# else
|
64
|
+
'subject_title_info' => '//subject/titleInfo', # .ea extract_full_title_from_title_info(node), then .flatten.uniq
|
65
|
+
|
66
|
+
'fulltext' => '//text()', # .collect { |n| n.to_s }.join(' ')
|
67
|
+
|
68
|
+
# TODO: simple element variants:
|
69
|
+
#
|
70
|
+
# genre authority
|
71
|
+
# accessCondition type
|
72
|
+
# note displayLabel
|
73
|
+
# MISSING:
|
74
|
+
# date_created
|
75
|
+
|
76
|
+
# TODO: collections
|
77
|
+
|
78
|
+
}
|
79
|
+
|
@@ -0,0 +1,153 @@
|
|
1
|
+
module Stanford
|
2
|
+
module Mods
|
3
|
+
|
4
|
+
def empty?
|
5
|
+
mods_xml.xpath('//text()').empty?
|
6
|
+
end
|
7
|
+
|
8
|
+
# Determine what language(s) this record declares
|
9
|
+
# Use iso-639 to translate codes into English words
|
10
|
+
# @return Array
|
11
|
+
def language
|
12
|
+
languages = []
|
13
|
+
language_codes.each do |code|
|
14
|
+
begin
|
15
|
+
csv_codes = code.to_s.split(/[,|\ ]/)
|
16
|
+
csv_codes = csv_codes.delete_if {|x| x.strip.length==0 }
|
17
|
+
csv_codes.each do |c|
|
18
|
+
languages << ISO_639.find(c.to_s.strip).english_name
|
19
|
+
end
|
20
|
+
rescue => e
|
21
|
+
SearchWorksOaiHarvester.logger.error "Couldn't find english name for #{code.to_s}"
|
22
|
+
# SearchWorksOaiHarvester.logger.error e
|
23
|
+
languages << code.to_s
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
language_words.each do |word|
|
28
|
+
if word.to_s.strip.length > 0
|
29
|
+
languages << word.to_s.strip
|
30
|
+
end
|
31
|
+
end
|
32
|
+
return nil if languages.uniq.empty?
|
33
|
+
return languages.uniq
|
34
|
+
end
|
35
|
+
|
36
|
+
# Interpret the various permutations of dateCreated
|
37
|
+
# @param [Nokogiri::XML::Element] node
|
38
|
+
def date_created
|
39
|
+
if create_start_date.length > 0 && create_end_date.length > 0
|
40
|
+
return "#{start_date} - #{end_date}"
|
41
|
+
else
|
42
|
+
return node.xpath('//dateCreated/text()').to_s
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def date_created_or_issued
|
47
|
+
begin
|
48
|
+
return date_created unless date_created.nil? or date_created.length == 0
|
49
|
+
return date_issued unless date_issued.nil? or date_issued.length == 0
|
50
|
+
nil
|
51
|
+
rescue
|
52
|
+
nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# A single value for publication year (this will need refinement over time)
|
57
|
+
# @return String
|
58
|
+
def pub_year(year = date_created_or_issued)
|
59
|
+
year[/[0-9]{4}/]
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
# TODO: Ask Jessie what the valid values are here
|
66
|
+
# @return String
|
67
|
+
def display_type
|
68
|
+
return "image" if is_an_image?
|
69
|
+
return "image" if is_a_map?
|
70
|
+
return "collection" if is_a_collection?
|
71
|
+
nil
|
72
|
+
end
|
73
|
+
|
74
|
+
# Check to see if this item is a map
|
75
|
+
# @return Boolean
|
76
|
+
def is_a_map?
|
77
|
+
return true if mods_xml.xpath('//typeOfResource/text()').to_s.match(/^[Cc]artographic/)
|
78
|
+
return true if mods_xml.xpath('//genre[@authority="marcgt"]/text()').to_s.match(/^[Mm]ap/)
|
79
|
+
return true if mods_xml.xpath('//physicalDescription/form/text()').to_s.match(/[Mm]ap/)
|
80
|
+
return true if mods_xml.xpath('//physicalDescription/internetMediaType/text()').to_s.match(/[Mm]ap/)
|
81
|
+
false
|
82
|
+
end
|
83
|
+
|
84
|
+
# Check to see if this item is an Image
|
85
|
+
# @return Boolean
|
86
|
+
def is_an_image?
|
87
|
+
return true if mods_xml.xpath('//typeOfResource/text()').to_s.match(/still image/)
|
88
|
+
false
|
89
|
+
end
|
90
|
+
|
91
|
+
# Objects can belong to a collection by reference (handled in solr_mapper.rb),
|
92
|
+
# or they can declare themselves part of a collection in MODS
|
93
|
+
# e.g., Revs does it like this:
|
94
|
+
# <mods:relatedItem type="host">
|
95
|
+
# <mods:titleInfo>
|
96
|
+
# <mods:title>The Collier Collection of the Revs Institute for Automotive Research</mods:title>
|
97
|
+
# </mods:titleInfo>
|
98
|
+
# <mods:typeOfResource collection="yes"/>
|
99
|
+
# </mods:relatedItem>
|
100
|
+
def declared_collections
|
101
|
+
c = []
|
102
|
+
collection_nodes = mods_xml.xpath("//relatedItem/typeOfResource[@collection='yes']")
|
103
|
+
collection_nodes.each do |node|
|
104
|
+
c << node.xpath('../titleInfo/title/text()').to_s
|
105
|
+
end
|
106
|
+
c
|
107
|
+
end
|
108
|
+
|
109
|
+
# Check to see if this item is a collection
|
110
|
+
# @return Boolean
|
111
|
+
def is_a_collection?
|
112
|
+
return true if mods_xml.xpath("/mods/typeOfResource/@collection").to_s == 'yes'
|
113
|
+
false
|
114
|
+
end
|
115
|
+
|
116
|
+
def physical_description_form
|
117
|
+
form = mods_xml.xpath('//physicalDescription/form/text()').to_s
|
118
|
+
media_type = mods_xml.xpath('//physicalDescription/internetMediaType/text()').to_s
|
119
|
+
if form != media_type && form
|
120
|
+
form
|
121
|
+
elsif media_type
|
122
|
+
media_type
|
123
|
+
else
|
124
|
+
nil
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
|
129
|
+
|
130
|
+
# Accept a nokogiri representation of a mods titleInfo element
|
131
|
+
# Return a formatted string of the title it describes
|
132
|
+
# @param node Nokogiri::XML::Element
|
133
|
+
# @return String
|
134
|
+
def extract_title_from_title_info(node)
|
135
|
+
"#{node.xpath('nonSort/text()')} #{node.xpath('title/text()')}".strip
|
136
|
+
end
|
137
|
+
|
138
|
+
# Accept a nokogiri representation of a mods titleInfo element
|
139
|
+
# Return a formatted string of the title it describes
|
140
|
+
# @param node Nokogiri::XML::Element
|
141
|
+
# @return String
|
142
|
+
def extract_full_title_from_title_info(node)
|
143
|
+
title = "#{node.xpath('nonSort/text()')} #{node.xpath('title/text()')}".strip
|
144
|
+
unless node.xpath('subTitle/text()').empty?
|
145
|
+
title = "#{title}: #{node.xpath('subTitle/text()')}"
|
146
|
+
end
|
147
|
+
return title
|
148
|
+
end
|
149
|
+
|
150
|
+
|
151
|
+
|
152
|
+
end
|
153
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "stanford-mods/mappings"
|
2
|
+
require "stanford-mods/version"
|
3
|
+
require 'mods'
|
4
|
+
|
5
|
+
# Stanford specific wranglings of MODS metadata as an extension of the Mods::Record object
|
6
|
+
module Stanford
|
7
|
+
module Mods
|
8
|
+
|
9
|
+
class Record < ::Mods::Record
|
10
|
+
|
11
|
+
# proof of concept method
|
12
|
+
def to_be_removed
|
13
|
+
puts "in to_be_removed!"
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/stanford-mods/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.name = "stanford-mods"
|
6
|
+
gem.version = Stanford::Mods::VERSION
|
7
|
+
gem.authors = ["Naomi Dushay", "Bess Sadler"]
|
8
|
+
gem.email = ["ndushay AT stanford.edu", "bess AT stanford.edu"]
|
9
|
+
gem.description = "Stanford specific wrangling of MODS metadata from DOR, the Stanford Digital Object Repository"
|
10
|
+
gem.summary = "Stanford specific wrangling of MODS metadata"
|
11
|
+
gem.homepage = "https://github.com/sul-dlss/stanford-mods"
|
12
|
+
|
13
|
+
gem.extra_rdoc_files = ["LICENSE", "README.rdoc"]
|
14
|
+
gem.files = `git ls-files`.split($\)
|
15
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
16
|
+
gem.test_files = gem.files.grep(%r{^spec/})
|
17
|
+
gem.require_paths = ["lib"]
|
18
|
+
|
19
|
+
gem.add_dependency 'mods'
|
20
|
+
|
21
|
+
# Runtime dependencies
|
22
|
+
# gem.add_runtime_dependency 'nokogiri'
|
23
|
+
|
24
|
+
# Development dependencies
|
25
|
+
# Bundler will install these gems too if you've checked out solrmarc-wrapper source from git and run 'bundle install'
|
26
|
+
# It will not add these as dependencies if you require solrmarc-wrapper for other projects
|
27
|
+
gem.add_development_dependency "rake"
|
28
|
+
# docs
|
29
|
+
gem.add_development_dependency "rdoc"
|
30
|
+
gem.add_development_dependency "yard"
|
31
|
+
# tests
|
32
|
+
gem.add_development_dependency 'rspec'
|
33
|
+
gem.add_development_dependency 'simplecov'
|
34
|
+
gem.add_development_dependency 'simplecov-rcov'
|
35
|
+
# gem.add_development_dependency 'ruby-debug19'
|
36
|
+
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,182 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: stanford-mods
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Naomi Dushay
|
9
|
+
- Bess Sadler
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2012-11-12 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: mods
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: '0'
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: rake
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
type: :development
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rdoc
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: yard
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
none: false
|
67
|
+
requirements:
|
68
|
+
- - ! '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
type: :development
|
72
|
+
prerelease: false
|
73
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ! '>='
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
name: rspec
|
81
|
+
requirement: !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ! '>='
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
type: :development
|
88
|
+
prerelease: false
|
89
|
+
version_requirements: !ruby/object:Gem::Requirement
|
90
|
+
none: false
|
91
|
+
requirements:
|
92
|
+
- - ! '>='
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: '0'
|
95
|
+
- !ruby/object:Gem::Dependency
|
96
|
+
name: simplecov
|
97
|
+
requirement: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
type: :development
|
104
|
+
prerelease: false
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: simplecov-rcov
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
none: false
|
115
|
+
requirements:
|
116
|
+
- - ! '>='
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
type: :development
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
none: false
|
123
|
+
requirements:
|
124
|
+
- - ! '>='
|
125
|
+
- !ruby/object:Gem::Version
|
126
|
+
version: '0'
|
127
|
+
description: Stanford specific wrangling of MODS metadata from DOR, the Stanford Digital
|
128
|
+
Object Repository
|
129
|
+
email:
|
130
|
+
- ndushay AT stanford.edu
|
131
|
+
- bess AT stanford.edu
|
132
|
+
executables: []
|
133
|
+
extensions: []
|
134
|
+
extra_rdoc_files:
|
135
|
+
- LICENSE
|
136
|
+
- README.rdoc
|
137
|
+
files:
|
138
|
+
- .gitignore
|
139
|
+
- .rvmrc
|
140
|
+
- .travis.yml
|
141
|
+
- .yardopts
|
142
|
+
- Gemfile
|
143
|
+
- LICENSE
|
144
|
+
- README.rdoc
|
145
|
+
- Rakefile
|
146
|
+
- config/mappings_hash.rb
|
147
|
+
- lib/stanford-mods.rb
|
148
|
+
- lib/stanford-mods/mappings.rb
|
149
|
+
- lib/stanford-mods/version.rb
|
150
|
+
- stanford-mods.gemspec
|
151
|
+
homepage: https://github.com/sul-dlss/stanford-mods
|
152
|
+
licenses: []
|
153
|
+
post_install_message:
|
154
|
+
rdoc_options: []
|
155
|
+
require_paths:
|
156
|
+
- lib
|
157
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
158
|
+
none: false
|
159
|
+
requirements:
|
160
|
+
- - ! '>='
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
163
|
+
segments:
|
164
|
+
- 0
|
165
|
+
hash: -3964216596678128240
|
166
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
167
|
+
none: false
|
168
|
+
requirements:
|
169
|
+
- - ! '>='
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0'
|
172
|
+
segments:
|
173
|
+
- 0
|
174
|
+
hash: -3964216596678128240
|
175
|
+
requirements: []
|
176
|
+
rubyforge_project:
|
177
|
+
rubygems_version: 1.8.24
|
178
|
+
signing_key:
|
179
|
+
specification_version: 3
|
180
|
+
summary: Stanford specific wrangling of MODS metadata
|
181
|
+
test_files: []
|
182
|
+
has_rdoc:
|