mods_display 0.3.3 → 0.3.4

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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +16 -0
  3. data/.rubocop_todo.yml +60 -0
  4. data/.travis.yml +2 -2
  5. data/Rakefile +10 -2
  6. data/lib/mods_display.rb +42 -42
  7. data/lib/mods_display/configuration.rb +69 -67
  8. data/lib/mods_display/configuration/access_condition.rb +17 -13
  9. data/lib/mods_display/configuration/base.rb +27 -24
  10. data/lib/mods_display/configuration/format.rb +8 -4
  11. data/lib/mods_display/configuration/genre.rb +8 -4
  12. data/lib/mods_display/configuration/imprint.rb +12 -7
  13. data/lib/mods_display/configuration/name.rb +8 -4
  14. data/lib/mods_display/configuration/note.rb +8 -4
  15. data/lib/mods_display/configuration/related_item.rb +8 -4
  16. data/lib/mods_display/configuration/subject.rb +11 -9
  17. data/lib/mods_display/configuration/title.rb +8 -4
  18. data/lib/mods_display/controller_extension.rb +24 -24
  19. data/lib/mods_display/country_codes.rb +385 -384
  20. data/lib/mods_display/fields/abstract.rb +7 -6
  21. data/lib/mods_display/fields/access_condition.rb +55 -55
  22. data/lib/mods_display/fields/audience.rb +7 -6
  23. data/lib/mods_display/fields/cartographics.rb +15 -14
  24. data/lib/mods_display/fields/collection.rb +32 -17
  25. data/lib/mods_display/fields/contact.rb +15 -13
  26. data/lib/mods_display/fields/contents.rb +7 -6
  27. data/lib/mods_display/fields/description.rb +21 -21
  28. data/lib/mods_display/fields/field.rb +164 -109
  29. data/lib/mods_display/fields/format.rb +36 -33
  30. data/lib/mods_display/fields/genre.rb +12 -11
  31. data/lib/mods_display/fields/identifier.rb +34 -34
  32. data/lib/mods_display/fields/imprint.rb +258 -214
  33. data/lib/mods_display/fields/language.rb +18 -16
  34. data/lib/mods_display/fields/location.rb +27 -26
  35. data/lib/mods_display/fields/name.rb +113 -118
  36. data/lib/mods_display/fields/note.rb +33 -34
  37. data/lib/mods_display/fields/related_item.rb +64 -66
  38. data/lib/mods_display/fields/resource_type.rb +13 -11
  39. data/lib/mods_display/fields/sub_title.rb +6 -4
  40. data/lib/mods_display/fields/subject.rb +92 -90
  41. data/lib/mods_display/fields/title.rb +54 -49
  42. data/lib/mods_display/fields/values.rb +7 -8
  43. data/lib/mods_display/html.rb +117 -96
  44. data/lib/mods_display/model_extension.rb +17 -16
  45. data/lib/mods_display/relator_codes.rb +269 -267
  46. data/lib/mods_display/version.rb +1 -1
  47. data/mods_display.gemspec +13 -12
  48. data/spec/configuration/access_condition_spec.rb +5 -5
  49. data/spec/configuration/base_spec.rb +24 -24
  50. data/spec/fields/abstract_spec.rb +24 -14
  51. data/spec/fields/access_condition_spec.rb +80 -55
  52. data/spec/fields/audience_spec.rb +15 -12
  53. data/spec/fields/cartographics_spec.rb +17 -18
  54. data/spec/fields/collection_spec.rb +65 -19
  55. data/spec/fields/contact_spec.rb +11 -9
  56. data/spec/fields/contents_spec.rb +15 -12
  57. data/spec/fields/description_spec.rb +40 -22
  58. data/spec/fields/format_spec.rb +28 -18
  59. data/spec/fields/genre_spec.rb +18 -16
  60. data/spec/fields/identifier_spec.rb +46 -34
  61. data/spec/fields/imprint_spec.rb +151 -125
  62. data/spec/fields/language_spec.rb +36 -20
  63. data/spec/fields/location_spec.rb +43 -27
  64. data/spec/fields/name_spec.rb +92 -92
  65. data/spec/fields/note_spec.rb +53 -40
  66. data/spec/fields/related_item_spec.rb +42 -40
  67. data/spec/fields/resource_type_spec.rb +20 -14
  68. data/spec/fields/sub_title_spec.rb +11 -9
  69. data/spec/fields/subject_spec.rb +61 -56
  70. data/spec/fields/title_spec.rb +53 -40
  71. data/spec/fixtures/access_condition_fixtures.rb +50 -0
  72. data/spec/fixtures/cartographics_fixtures.rb +1 -1
  73. data/spec/fixtures/imprint_fixtures.rb +49 -1
  74. data/spec/fixtures/name_fixtures.rb +195 -2
  75. data/spec/fixtures/related_item_fixtures.rb +107 -0
  76. data/spec/fixtures/subjects_fixtures.rb +15 -2
  77. data/spec/fixtures/title_fixtures.rb +101 -0
  78. data/spec/integration/configuration_spec.rb +23 -20
  79. data/spec/integration/html_spec.rb +40 -29
  80. data/spec/integration/installation_spec.rb +14 -14
  81. data/spec/spec_helper.rb +5 -8
  82. metadata +25 -3
@@ -1,11 +1,10 @@
1
- class ModsDisplay::Values
2
- attr_accessor :label, :values
3
- def initialize(values)
4
- values.each do |key, value|
5
- if [:label, :values].include?(key)
6
- self.send("#{key}=".to_sym, value)
1
+ module ModsDisplay
2
+ class Values
3
+ attr_accessor :label, :values
4
+ def initialize(values)
5
+ values.each do |key, value|
6
+ send("#{key}=".to_sym, value) if [:label, :values].include?(key)
7
7
  end
8
8
  end
9
9
  end
10
-
11
- end
10
+ end
@@ -1,109 +1,130 @@
1
- class ModsDisplay::HTML
2
- attr_reader :title, :body
3
- def initialize(config, xml, klass)
4
- @config = config
5
- @stanford_mods = xml
6
- @xml = xml.mods_ng_xml
7
- @klass = klass
8
- end
9
-
10
- def title
11
- unless mods_field(@xml, :title).fields.empty?
12
- return mods_field(@xml, :title).fields.first.values
1
+ module ModsDisplay
2
+ class HTML
3
+ attr_reader :title, :body
4
+ def initialize(config, xml, klass)
5
+ @config = config
6
+ @stanford_mods = xml
7
+ @xml = xml.mods_ng_xml
8
+ @klass = klass
13
9
  end
14
- ""
15
- end
16
-
17
- # Need to figure out how to get the 1st title out of the list.
18
- # Maybe have a separate class that will omit the first tite natively
19
- # and replace the first key in the the fields list with that.
20
- def body
21
- output = "<dl>"
22
- body_fields = mods_display_fields.dup
23
- body_fields[0] = :subTitle
24
- body_fields.each do |field_key|
25
- field = mods_field(@xml, field_key)
26
- unless field.nil? or field.to_html.nil?
27
- output << mods_field(@xml, field_key).to_html
10
+
11
+ def title
12
+ unless mods_field(@xml, :title).fields.empty?
13
+ return mods_field(@xml, :title).fields.first.values
28
14
  end
15
+ ''
29
16
  end
30
- output << "</dl>"
31
- end
32
-
33
- def to_html
34
- output = "<dl>"
35
- mods_display_fields.each do |field_key|
36
- field = mods_field(@xml, field_key)
37
- unless field.nil? or field.to_html.nil?
38
- output << field.to_html
17
+
18
+ # Need to figure out how to get the 1st title out of the list.
19
+ # Maybe have a separate class that will omit the first tite natively
20
+ # and replace the first key in the the fields list with that.
21
+ def body
22
+ output = '<dl>'
23
+ body_fields = mods_display_fields.dup
24
+ body_fields[0] = :subTitle
25
+ body_fields.each do |field_key|
26
+ field = mods_field(@xml, field_key)
27
+ unless field.nil? || field.to_html.nil?
28
+ output << mods_field(@xml, field_key).to_html
29
+ end
39
30
  end
31
+ output << '</dl>'
40
32
  end
41
- output << "</dl>"
42
- end
43
-
44
- def method_missing(method_name, *args, &block)
45
- if self.to_s.respond_to?(method_name)
46
- self.to_html.send(method_name, *args, &block)
47
- elsif mods_display_fields.include?(method_name)
48
- mods_field(@xml, method_name).fields
49
- else
50
- super
33
+
34
+ def to_html
35
+ output = '<dl>'
36
+ mods_display_fields.each do |field_key|
37
+ field = mods_field(@xml, field_key)
38
+ output << field.to_html unless field.nil? || field.to_html.nil?
39
+ end
40
+ output << '</dl>'
51
41
  end
52
- end
53
-
54
- private
55
-
56
- def mods_field(xml, field_key)
57
- if xml.respond_to?(mods_display_field_mapping[field_key])
58
- field = xml.send(mods_display_field_mapping[field_key])
59
- ModsDisplay.const_get("#{field_key.slice(0,1).upcase}#{field_key.slice(1..-1)}").new(field, field_config(field_key), @klass)
60
- else @stanford_mods.respond_to?(field_key)
61
- ModsDisplay.const_get("#{field_key.slice(0,1).upcase}#{field_key.slice(1..-1)}").new(@stanford_mods, field_config(field_key), @klass)
42
+
43
+ def method_missing(method_name, *args, &block)
44
+ if to_s.respond_to?(method_name)
45
+ to_html.send(method_name, *args, &block)
46
+ elsif mods_display_fields.include?(method_name)
47
+ mods_field(@xml, method_name).fields
48
+ else
49
+ super
50
+ end
62
51
  end
63
- end
64
-
65
- def field_config(field_key)
66
- begin
52
+
53
+ private
54
+
55
+ def mods_field(xml, field_key)
56
+ if xml.respond_to?(mods_display_field_mapping[field_key])
57
+ field = xml.send(mods_display_field_mapping[field_key])
58
+ ModsDisplay.const_get(
59
+ "#{field_key.slice(0, 1).upcase}#{field_key.slice(1..-1)}"
60
+ ).new(field, field_config(field_key), @klass)
61
+ elsif @stanford_mods.respond_to?(field_key)
62
+ ModsDisplay.const_get(
63
+ "#{field_key.slice(0, 1).upcase}#{field_key.slice(1..-1)}"
64
+ ).new(@stanford_mods, field_config(field_key), @klass)
65
+ end
66
+ end
67
+
68
+ def field_config(field_key)
67
69
  @config.send(field_key_translation[field_key] || field_key)
68
70
  rescue
69
71
  ModsDisplay::Configuration::Base.new
70
72
  end
71
- end
72
-
73
- def mods_display_fields
74
- [:title, :name, :language, :imprint, :resourceType, :genre, :format, :description, :cartographics, :abstract, :contents, :audience, :note, :contact, :collection, :relatedItem, :subject, :identifier, :location, :accessCondition]
75
- end
76
-
77
- def mods_display_field_mapping
78
- {:title => :title_info,
79
- :subTitle => :title_info,
80
- :name => :plain_name,
81
- :resourceType => :typeOfResource,
82
- :genre => :genre,
83
- :format => :format,
84
- :imprint => :origin_info,
85
- :language => :language,
86
- :description => :physical_description,
87
- :cartographics => :subject,
88
- :abstract => :abstract,
89
- :contents => :tableOfContents,
90
- :audience => :targetAudience,
91
- :note => :note,
92
- :contact => :note,
93
- :collection => :related_item,
94
- :relatedItem => :related_item,
95
- :subject => :subject,
96
- :identifier => :identifier,
97
- :location => :location,
98
- :accessCondition => :accessCondition}
99
- end
100
73
 
101
- def field_key_translation
102
- {:subTitle => :sub_title,
103
- :resourceType => :resource_type,
104
- :relatedItem => :related_item,
105
- :accessCondition => :access_condition
106
- }
107
- end
74
+ def mods_display_fields
75
+ [:title,
76
+ :name,
77
+ :language,
78
+ :imprint,
79
+ :resourceType,
80
+ :genre,
81
+ :format,
82
+ :description,
83
+ :cartographics,
84
+ :abstract,
85
+ :contents,
86
+ :audience,
87
+ :note,
88
+ :contact,
89
+ :collection,
90
+ :relatedItem,
91
+ :subject,
92
+ :identifier,
93
+ :location,
94
+ :accessCondition
95
+ ]
96
+ end
97
+
98
+ def mods_display_field_mapping
99
+ { title: :title_info,
100
+ subTitle: :title_info,
101
+ name: :plain_name,
102
+ resourceType: :typeOfResource,
103
+ genre: :genre,
104
+ format: :format,
105
+ imprint: :origin_info,
106
+ language: :language,
107
+ description: :physical_description,
108
+ cartographics: :subject,
109
+ abstract: :abstract,
110
+ contents: :tableOfContents,
111
+ audience: :targetAudience,
112
+ note: :note,
113
+ contact: :note,
114
+ collection: :related_item,
115
+ relatedItem: :related_item,
116
+ subject: :subject,
117
+ identifier: :identifier,
118
+ location: :location,
119
+ accessCondition: :accessCondition }
120
+ end
108
121
 
109
- end
122
+ def field_key_translation
123
+ { subTitle: :sub_title,
124
+ resourceType: :resource_type,
125
+ relatedItem: :related_item,
126
+ accessCondition: :access_condition
127
+ }
128
+ end
129
+ end
130
+ end
@@ -1,21 +1,22 @@
1
- module ModsDisplay::ModelExtension
2
-
3
- def self.included(base)
4
- base.extend ClassMethods
5
- base.class_eval do
6
- def mods_display_xml
7
- xml = self.class.mods_xml_source.call(self)
8
- return if xml.nil?
9
- mods = Stanford::Mods::Record.new
10
- mods.from_str(xml, false)
11
- mods
1
+ module ModsDisplay
2
+ module ModelExtension
3
+ def self.included(base)
4
+ base.extend ClassMethods
5
+ base.class_eval do
6
+ def mods_display_xml
7
+ xml = self.class.mods_xml_source.call(self)
8
+ return if xml.nil?
9
+ mods = Stanford::Mods::Record.new
10
+ mods.from_str(xml, false)
11
+ mods
12
+ end
12
13
  end
13
14
  end
14
- end
15
15
 
16
- module ClassMethods
17
- def mods_xml_source &xml
18
- @mods_xml_source ||= xml
16
+ module ClassMethods
17
+ def mods_xml_source(&xml)
18
+ @mods_xml_source ||= xml
19
+ end
19
20
  end
20
21
  end
21
- end
22
+ end
@@ -1,268 +1,270 @@
1
- module ModsDisplay::RelatorCodes
2
- def relator_codes
3
- {"abr" => "Abridger",
4
- "acp" => "Art copyist",
5
- "act" => "Actor",
6
- "adi" => "Art director",
7
- "adp" => "Adapter",
8
- "aft" => "Author of afterword, colophon, etc.",
9
- "anl" => "Analyst",
10
- "anm" => "Animator",
11
- "ann" => "Annotator",
12
- "ant" => "Bibliographic antecedent",
13
- "ape" => "Appellee",
14
- "apl" => "Appellant",
15
- "app" => "Applicant",
16
- "aqt" => "Author in quotations or text abstracts",
17
- "arc" => "Architect",
18
- "ard" => "Artistic director",
19
- "arr" => "Arranger",
20
- "art" => "Artist",
21
- "asg" => "Assignee",
22
- "asn" => "Associated name",
23
- "ato" => "Autographer",
24
- "att" => "Attributed name",
25
- "auc" => "Auctioneer",
26
- "aud" => "Author of dialog",
27
- "aui" => "Author of introduction, etc.",
28
- "aus" => "Screenwriter",
29
- "aut" => "Author",
30
- "bdd" => "Binding designer",
31
- "bjd" => "Bookjacket designer",
32
- "bkd" => "Book designer",
33
- "bkp" => "Book producer",
34
- "blw" => "Blurb writer",
35
- "bnd" => "Binder",
36
- "bpd" => "Bookplate designer",
37
- "brd" => "Broadcaster",
38
- "brl" => "Braille embosser",
39
- "bsl" => "Bookseller",
40
- "cas" => "Caster",
41
- "ccp" => "Conceptor",
42
- "chr" => "Choreographer",
43
- "clb" => "Collaborator",
44
- "cli" => "Client",
45
- "cll" => "Calligrapher",
46
- "clr" => "Colorist",
47
- "clt" => "Collotyper",
48
- "cmm" => "Commentator",
49
- "cmp" => "Composer",
50
- "cmt" => "Compositor",
51
- "cnd" => "Conductor",
52
- "cng" => "Cinematographer",
53
- "cns" => "Censor",
54
- "coe" => "Contestant-appellee",
55
- "col" => "Collector",
56
- "com" => "Compiler",
57
- "con" => "Conservator",
58
- "cor" => "Collection registrar",
59
- "cos" => "Contestant",
60
- "cot" => "Contestant-appellant",
61
- "cou" => "Court governed",
62
- "cov" => "Cover designer",
63
- "cpc" => "Copyright claimant",
64
- "cpe" => "Complainant-appellee",
65
- "cph" => "Copyright holder",
66
- "cpl" => "Complainant",
67
- "cpt" => "Complainant-appellant",
68
- "cre" => "Creator",
69
- "crp" => "Correspondent",
70
- "crr" => "Corrector",
71
- "crt" => "Court reporter",
72
- "csl" => "Consultant",
73
- "csp" => "Consultant to a project",
74
- "cst" => "Costume designer",
75
- "ctb" => "Contributor",
76
- "cte" => "Contestee-appellee",
77
- "ctg" => "Cartographer",
78
- "ctr" => "Contractor",
79
- "cts" => "Contestee",
80
- "ctt" => "Contestee-appellant",
81
- "cur" => "Curator",
82
- "cwt" => "Commentator for written text",
83
- "dbp" => "Distribution place",
84
- "dfd" => "Defendant",
85
- "dfe" => "Defendant-appellee",
86
- "dft" => "Defendant-appellant",
87
- "dgg" => "Degree granting institution",
88
- "dis" => "Dissertant",
89
- "dln" => "Delineator",
90
- "dnc" => "Dancer",
91
- "dnr" => "Donor",
92
- "dpc" => "Depicted",
93
- "dpt" => "Depositor",
94
- "drm" => "Draftsman",
95
- "drt" => "Director",
96
- "dsr" => "Designer",
97
- "dst" => "Distributor",
98
- "dtc" => "Data contributor",
99
- "dte" => "Dedicatee",
100
- "dtm" => "Data manager",
101
- "dto" => "Dedicator",
102
- "dub" => "Dubious author",
103
- "edc" => "Editor of compilation",
104
- "edm" => "Editor of moving image work",
105
- "edt" => "Editor",
106
- "egr" => "Engraver",
107
- "elg" => "Electrician",
108
- "elt" => "Electrotyper",
109
- "eng" => "Engineer",
110
- "enj" => "Enacting jurisdiction",
111
- "etr" => "Etcher",
112
- "evp" => "Event place",
113
- "exp" => "Expert",
114
- "fac" => "Facsimilist",
115
- "fds" => "Film distributor",
116
- "fld" => "Field director",
117
- "flm" => "Film editor",
118
- "fmd" => "Film director",
119
- "fmk" => "Filmmaker",
120
- "fmo" => "Former owner",
121
- "fmp" => "Film producer",
122
- "fnd" => "Funder",
123
- "fpy" => "First party",
124
- "frg" => "Forger",
125
- "gis" => "Geographic information specialist",
126
- "grt" => "Graphic technician",
127
- "his" => "Host institution",
128
- "hnr" => "Honoree",
129
- "hst" => "Host",
130
- "ill" => "Illustrator",
131
- "ilu" => "Illuminator",
132
- "ins" => "Inscriber",
133
- "itr" => "Instrumentalist",
134
- "ive" => "Interviewee",
135
- "ivr" => "Interviewer",
136
- "inv" => "Inventor",
137
- "isb" => "Issuing body",
138
- "jud" => "Judge",
139
- "jug" => "Jurisdiction governed",
140
- "lbr" => "Laboratory",
141
- "lbt" => "Librettist",
142
- "ldr" => "Laboratory director",
143
- "led" => "Lead",
144
- "lee" => "Libelee-appellee",
145
- "lel" => "Libelee",
146
- "len" => "Lender",
147
- "let" => "Libelee-appellant",
148
- "lgd" => "Lighting designer",
149
- "lie" => "Libelant-appellee",
150
- "lil" => "Libelant",
151
- "lit" => "Libelant-appellant",
152
- "lsa" => "Landscape architect",
153
- "lse" => "Licensee",
154
- "lso" => "Licensor",
155
- "ltg" => "Lithographer",
156
- "lyr" => "Lyricist",
157
- "mcp" => "Music copyist",
158
- "mdc" => "Metadata contact",
159
- "mfp" => "Manufacture place",
160
- "mfr" => "Manufacturer",
161
- "mod" => "Moderator",
162
- "mon" => "Monitor",
163
- "mrb" => "Marbler",
164
- "mrk" => "Markup editor",
165
- "msd" => "Musical director",
166
- "mte" => "Metal-engraver",
167
- "mus" => "Musician",
168
- "nrt" => "Narrator",
169
- "opn" => "Opponent",
170
- "org" => "Originator",
171
- "orm" => "Organizer of meeting",
172
- "osp" => "Onscreen presenter",
173
- "oth" => "Other",
174
- "own" => "Owner",
175
- "pan" => "Panelist",
176
- "pat" => "Patron",
177
- "pbd" => "Publishing director",
178
- "pbl" => "Publisher",
179
- "pdr" => "Project director",
180
- "pfr" => "Proofreader",
181
- "pht" => "Photographer",
182
- "plt" => "Platemaker",
183
- "pma" => "Permitting agency",
184
- "pmn" => "Production manager",
185
- "pop" => "Printer of plates",
186
- "ppm" => "Papermaker",
187
- "ppt" => "Puppeteer",
188
- "pra" => "Praeses",
189
- "prc" => "Process contact",
190
- "prd" => "Production personnel",
191
- "pre" => "Presenter",
192
- "prf" => "Performer",
193
- "prg" => "Programmer",
194
- "prm" => "Printmaker",
195
- "prn" => "Production company",
196
- "pro" => "Producer",
197
- "prp" => "Production place",
198
- "prs" => "Production designer",
199
- "prt" => "Printer",
200
- "prv" => "Provider",
201
- "pta" => "Patent applicant",
202
- "pte" => "Plaintiff-appellee",
203
- "ptf" => "Plaintiff",
204
- "pth" => "Patent holder",
205
- "ptt" => "Plaintiff-appellant",
206
- "pup" => "Publication place",
207
- "rbr" => "Rubricator",
208
- "rce" => "Recording engineer",
209
- "rcd" => "Recordist",
210
- "rcp" => "Addressee",
211
- "rdd" => "Radio director",
212
- "red" => "Redaktor",
213
- "ren" => "Renderer",
214
- "res" => "Researcher",
215
- "rev" => "Reviewer",
216
- "rpc" => "Radio producer",
217
- "rps" => "Repository",
218
- "rpt" => "Reporter",
219
- "rpy" => "Responsible party",
220
- "rse" => "Respondent-appellee",
221
- "rsg" => "Restager",
222
- "rsp" => "Respondent",
223
- "rsr" => "Restorationist",
224
- "rst" => "Respondent-appellant",
225
- "rth" => "Research team head",
226
- "rtm" => "Research team member",
227
- "sad" => "Scientific advisor",
228
- "sce" => "Scenarist",
229
- "scl" => "Sculptor",
230
- "scr" => "Scribe",
231
- "sds" => "Sound designer",
232
- "sec" => "Secretary",
233
- "sgd" => "Stage director",
234
- "sgn" => "Signer",
235
- "sht" => "Supporting host",
236
- "sll" => "Seller",
237
- "sng" => "Singer",
238
- "spk" => "Speaker",
239
- "spn" => "Sponsor",
240
- "spy" => "Second party",
241
- "std" => "Set designer",
242
- "stg" => "Setting",
243
- "stl" => "Storyteller",
244
- "stm" => "Stage manager",
245
- "stn" => "Standards body",
246
- "str" => "Stereotyper",
247
- "srv" => "Surveyor",
248
- "tcd" => "Technical director",
249
- "tch" => "Teacher",
250
- "ths" => "Thesis advisor",
251
- "tld" => "Television director",
252
- "tlp" => "Television producer",
253
- "trc" => "Transcriber",
254
- "trl" => "Translator",
255
- "tyd" => "Type designer",
256
- "tyg" => "Typographer",
257
- "uvp" => "University place",
258
- "vdg" => "Videographer",
259
- "voc" => "Vocalist",
260
- "wac" => "Writer of added commentary",
261
- "wal" => "Writer of added lyrics",
262
- "wam" => "Writer of accompanying material",
263
- "wat" => "Writer of added text",
264
- "wdc" => "Woodcutter",
265
- "wde" => "Wood engraver",
266
- "wit" => "Witness"}
1
+ module ModsDisplay
2
+ module RelatorCodes
3
+ def relator_codes
4
+ { 'abr' => 'Abridger',
5
+ 'acp' => 'Art copyist',
6
+ 'act' => 'Actor',
7
+ 'adi' => 'Art director',
8
+ 'adp' => 'Adapter',
9
+ 'aft' => 'Author of afterword, colophon, etc.',
10
+ 'anl' => 'Analyst',
11
+ 'anm' => 'Animator',
12
+ 'ann' => 'Annotator',
13
+ 'ant' => 'Bibliographic antecedent',
14
+ 'ape' => 'Appellee',
15
+ 'apl' => 'Appellant',
16
+ 'app' => 'Applicant',
17
+ 'aqt' => 'Author in quotations or text abstracts',
18
+ 'arc' => 'Architect',
19
+ 'ard' => 'Artistic director',
20
+ 'arr' => 'Arranger',
21
+ 'art' => 'Artist',
22
+ 'asg' => 'Assignee',
23
+ 'asn' => 'Associated name',
24
+ 'ato' => 'Autographer',
25
+ 'att' => 'Attributed name',
26
+ 'auc' => 'Auctioneer',
27
+ 'aud' => 'Author of dialog',
28
+ 'aui' => 'Author of introduction, etc.',
29
+ 'aus' => 'Screenwriter',
30
+ 'aut' => 'Author',
31
+ 'bdd' => 'Binding designer',
32
+ 'bjd' => 'Bookjacket designer',
33
+ 'bkd' => 'Book designer',
34
+ 'bkp' => 'Book producer',
35
+ 'blw' => 'Blurb writer',
36
+ 'bnd' => 'Binder',
37
+ 'bpd' => 'Bookplate designer',
38
+ 'brd' => 'Broadcaster',
39
+ 'brl' => 'Braille embosser',
40
+ 'bsl' => 'Bookseller',
41
+ 'cas' => 'Caster',
42
+ 'ccp' => 'Conceptor',
43
+ 'chr' => 'Choreographer',
44
+ 'clb' => 'Collaborator',
45
+ 'cli' => 'Client',
46
+ 'cll' => 'Calligrapher',
47
+ 'clr' => 'Colorist',
48
+ 'clt' => 'Collotyper',
49
+ 'cmm' => 'Commentator',
50
+ 'cmp' => 'Composer',
51
+ 'cmt' => 'Compositor',
52
+ 'cnd' => 'Conductor',
53
+ 'cng' => 'Cinematographer',
54
+ 'cns' => 'Censor',
55
+ 'coe' => 'Contestant-appellee',
56
+ 'col' => 'Collector',
57
+ 'com' => 'Compiler',
58
+ 'con' => 'Conservator',
59
+ 'cor' => 'Collection registrar',
60
+ 'cos' => 'Contestant',
61
+ 'cot' => 'Contestant-appellant',
62
+ 'cou' => 'Court governed',
63
+ 'cov' => 'Cover designer',
64
+ 'cpc' => 'Copyright claimant',
65
+ 'cpe' => 'Complainant-appellee',
66
+ 'cph' => 'Copyright holder',
67
+ 'cpl' => 'Complainant',
68
+ 'cpt' => 'Complainant-appellant',
69
+ 'cre' => 'Creator',
70
+ 'crp' => 'Correspondent',
71
+ 'crr' => 'Corrector',
72
+ 'crt' => 'Court reporter',
73
+ 'csl' => 'Consultant',
74
+ 'csp' => 'Consultant to a project',
75
+ 'cst' => 'Costume designer',
76
+ 'ctb' => 'Contributor',
77
+ 'cte' => 'Contestee-appellee',
78
+ 'ctg' => 'Cartographer',
79
+ 'ctr' => 'Contractor',
80
+ 'cts' => 'Contestee',
81
+ 'ctt' => 'Contestee-appellant',
82
+ 'cur' => 'Curator',
83
+ 'cwt' => 'Commentator for written text',
84
+ 'dbp' => 'Distribution place',
85
+ 'dfd' => 'Defendant',
86
+ 'dfe' => 'Defendant-appellee',
87
+ 'dft' => 'Defendant-appellant',
88
+ 'dgg' => 'Degree granting institution',
89
+ 'dis' => 'Dissertant',
90
+ 'dln' => 'Delineator',
91
+ 'dnc' => 'Dancer',
92
+ 'dnr' => 'Donor',
93
+ 'dpc' => 'Depicted',
94
+ 'dpt' => 'Depositor',
95
+ 'drm' => 'Draftsman',
96
+ 'drt' => 'Director',
97
+ 'dsr' => 'Designer',
98
+ 'dst' => 'Distributor',
99
+ 'dtc' => 'Data contributor',
100
+ 'dte' => 'Dedicatee',
101
+ 'dtm' => 'Data manager',
102
+ 'dto' => 'Dedicator',
103
+ 'dub' => 'Dubious author',
104
+ 'edc' => 'Editor of compilation',
105
+ 'edm' => 'Editor of moving image work',
106
+ 'edt' => 'Editor',
107
+ 'egr' => 'Engraver',
108
+ 'elg' => 'Electrician',
109
+ 'elt' => 'Electrotyper',
110
+ 'eng' => 'Engineer',
111
+ 'enj' => 'Enacting jurisdiction',
112
+ 'etr' => 'Etcher',
113
+ 'evp' => 'Event place',
114
+ 'exp' => 'Expert',
115
+ 'fac' => 'Facsimilist',
116
+ 'fds' => 'Film distributor',
117
+ 'fld' => 'Field director',
118
+ 'flm' => 'Film editor',
119
+ 'fmd' => 'Film director',
120
+ 'fmk' => 'Filmmaker',
121
+ 'fmo' => 'Former owner',
122
+ 'fmp' => 'Film producer',
123
+ 'fnd' => 'Funder',
124
+ 'fpy' => 'First party',
125
+ 'frg' => 'Forger',
126
+ 'gis' => 'Geographic information specialist',
127
+ 'grt' => 'Graphic technician',
128
+ 'his' => 'Host institution',
129
+ 'hnr' => 'Honoree',
130
+ 'hst' => 'Host',
131
+ 'ill' => 'Illustrator',
132
+ 'ilu' => 'Illuminator',
133
+ 'ins' => 'Inscriber',
134
+ 'itr' => 'Instrumentalist',
135
+ 'ive' => 'Interviewee',
136
+ 'ivr' => 'Interviewer',
137
+ 'inv' => 'Inventor',
138
+ 'isb' => 'Issuing body',
139
+ 'jud' => 'Judge',
140
+ 'jug' => 'Jurisdiction governed',
141
+ 'lbr' => 'Laboratory',
142
+ 'lbt' => 'Librettist',
143
+ 'ldr' => 'Laboratory director',
144
+ 'led' => 'Lead',
145
+ 'lee' => 'Libelee-appellee',
146
+ 'lel' => 'Libelee',
147
+ 'len' => 'Lender',
148
+ 'let' => 'Libelee-appellant',
149
+ 'lgd' => 'Lighting designer',
150
+ 'lie' => 'Libelant-appellee',
151
+ 'lil' => 'Libelant',
152
+ 'lit' => 'Libelant-appellant',
153
+ 'lsa' => 'Landscape architect',
154
+ 'lse' => 'Licensee',
155
+ 'lso' => 'Licensor',
156
+ 'ltg' => 'Lithographer',
157
+ 'lyr' => 'Lyricist',
158
+ 'mcp' => 'Music copyist',
159
+ 'mdc' => 'Metadata contact',
160
+ 'mfp' => 'Manufacture place',
161
+ 'mfr' => 'Manufacturer',
162
+ 'mod' => 'Moderator',
163
+ 'mon' => 'Monitor',
164
+ 'mrb' => 'Marbler',
165
+ 'mrk' => 'Markup editor',
166
+ 'msd' => 'Musical director',
167
+ 'mte' => 'Metal-engraver',
168
+ 'mus' => 'Musician',
169
+ 'nrt' => 'Narrator',
170
+ 'opn' => 'Opponent',
171
+ 'org' => 'Originator',
172
+ 'orm' => 'Organizer of meeting',
173
+ 'osp' => 'Onscreen presenter',
174
+ 'oth' => 'Other',
175
+ 'own' => 'Owner',
176
+ 'pan' => 'Panelist',
177
+ 'pat' => 'Patron',
178
+ 'pbd' => 'Publishing director',
179
+ 'pbl' => 'Publisher',
180
+ 'pdr' => 'Project director',
181
+ 'pfr' => 'Proofreader',
182
+ 'pht' => 'Photographer',
183
+ 'plt' => 'Platemaker',
184
+ 'pma' => 'Permitting agency',
185
+ 'pmn' => 'Production manager',
186
+ 'pop' => 'Printer of plates',
187
+ 'ppm' => 'Papermaker',
188
+ 'ppt' => 'Puppeteer',
189
+ 'pra' => 'Praeses',
190
+ 'prc' => 'Process contact',
191
+ 'prd' => 'Production personnel',
192
+ 'pre' => 'Presenter',
193
+ 'prf' => 'Performer',
194
+ 'prg' => 'Programmer',
195
+ 'prm' => 'Printmaker',
196
+ 'prn' => 'Production company',
197
+ 'pro' => 'Producer',
198
+ 'prp' => 'Production place',
199
+ 'prs' => 'Production designer',
200
+ 'prt' => 'Printer',
201
+ 'prv' => 'Provider',
202
+ 'pta' => 'Patent applicant',
203
+ 'pte' => 'Plaintiff-appellee',
204
+ 'ptf' => 'Plaintiff',
205
+ 'pth' => 'Patent holder',
206
+ 'ptt' => 'Plaintiff-appellant',
207
+ 'pup' => 'Publication place',
208
+ 'rbr' => 'Rubricator',
209
+ 'rce' => 'Recording engineer',
210
+ 'rcd' => 'Recordist',
211
+ 'rcp' => 'Addressee',
212
+ 'rdd' => 'Radio director',
213
+ 'red' => 'Redaktor',
214
+ 'ren' => 'Renderer',
215
+ 'res' => 'Researcher',
216
+ 'rev' => 'Reviewer',
217
+ 'rpc' => 'Radio producer',
218
+ 'rps' => 'Repository',
219
+ 'rpt' => 'Reporter',
220
+ 'rpy' => 'Responsible party',
221
+ 'rse' => 'Respondent-appellee',
222
+ 'rsg' => 'Restager',
223
+ 'rsp' => 'Respondent',
224
+ 'rsr' => 'Restorationist',
225
+ 'rst' => 'Respondent-appellant',
226
+ 'rth' => 'Research team head',
227
+ 'rtm' => 'Research team member',
228
+ 'sad' => 'Scientific advisor',
229
+ 'sce' => 'Scenarist',
230
+ 'scl' => 'Sculptor',
231
+ 'scr' => 'Scribe',
232
+ 'sds' => 'Sound designer',
233
+ 'sec' => 'Secretary',
234
+ 'sgd' => 'Stage director',
235
+ 'sgn' => 'Signer',
236
+ 'sht' => 'Supporting host',
237
+ 'sll' => 'Seller',
238
+ 'sng' => 'Singer',
239
+ 'spk' => 'Speaker',
240
+ 'spn' => 'Sponsor',
241
+ 'spy' => 'Second party',
242
+ 'std' => 'Set designer',
243
+ 'stg' => 'Setting',
244
+ 'stl' => 'Storyteller',
245
+ 'stm' => 'Stage manager',
246
+ 'stn' => 'Standards body',
247
+ 'str' => 'Stereotyper',
248
+ 'srv' => 'Surveyor',
249
+ 'tcd' => 'Technical director',
250
+ 'tch' => 'Teacher',
251
+ 'ths' => 'Thesis advisor',
252
+ 'tld' => 'Television director',
253
+ 'tlp' => 'Television producer',
254
+ 'trc' => 'Transcriber',
255
+ 'trl' => 'Translator',
256
+ 'tyd' => 'Type designer',
257
+ 'tyg' => 'Typographer',
258
+ 'uvp' => 'University place',
259
+ 'vdg' => 'Videographer',
260
+ 'voc' => 'Vocalist',
261
+ 'wac' => 'Writer of added commentary',
262
+ 'wal' => 'Writer of added lyrics',
263
+ 'wam' => 'Writer of accompanying material',
264
+ 'wat' => 'Writer of added text',
265
+ 'wdc' => 'Woodcutter',
266
+ 'wde' => 'Wood engraver',
267
+ 'wit' => 'Witness' }
268
+ end
267
269
  end
268
- end
270
+ end