mods_display 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
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