cff 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGES.md +29 -0
- data/CITATION.cff +21 -0
- data/Gemfile +1 -1
- data/Rakefile +14 -11
- data/bin/console +3 -3
- data/cff.gemspec +23 -21
- data/lib/cff.rb +12 -13
- data/lib/cff/entity.rb +6 -23
- data/lib/cff/file.rb +17 -10
- data/lib/cff/model.rb +101 -98
- data/lib/cff/{model-part.rb → model_part.rb} +14 -4
- data/lib/cff/person.rb +5 -18
- data/lib/cff/reference.rb +213 -273
- data/lib/cff/util.rb +28 -21
- data/lib/cff/version.rb +3 -3
- metadata +31 -20
- data/.gitignore +0 -30
- data/.ruby-gemset +0 -1
- data/.ruby-version +0 -1
- data/.travis.yml +0 -20
@@ -12,16 +12,21 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
|
15
|
+
##
|
16
16
|
module CFF
|
17
17
|
|
18
|
-
#
|
18
|
+
# ModelPart is the superclass of anything that makes up part of the CFF Model.
|
19
|
+
# This includes Model, Person, Entity and Reference.
|
20
|
+
#
|
21
|
+
# ModelPart does not provide any methods or fields for the public API.
|
19
22
|
class ModelPart
|
23
|
+
|
24
|
+
# :stopdoc:
|
20
25
|
include Util
|
21
26
|
|
22
27
|
attr_reader :fields
|
23
28
|
|
24
|
-
def method_missing(name, *args)
|
29
|
+
def method_missing(name, *args)
|
25
30
|
n = method_to_field(name.id2name)
|
26
31
|
super unless self.class::ALLOWED_FIELDS.include?(n.chomp('='))
|
27
32
|
|
@@ -32,6 +37,11 @@ module CFF
|
|
32
37
|
end
|
33
38
|
end
|
34
39
|
|
40
|
+
def respond_to_missing?(name, *)
|
41
|
+
n = method_to_field(name.id2name)
|
42
|
+
self.class::ALLOWED_FIELDS.include?(n.chomp('=')) || super
|
43
|
+
end
|
44
|
+
|
45
|
+
# :startdoc:
|
35
46
|
end
|
36
|
-
# :startdoc:
|
37
47
|
end
|
data/lib/cff/person.rb
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
|
15
|
+
##
|
16
16
|
module CFF
|
17
17
|
|
18
18
|
# A Person represents a person in a CITATION.cff file. A Person might have a
|
@@ -20,21 +20,9 @@ module CFF
|
|
20
20
|
class Person < ModelPart
|
21
21
|
|
22
22
|
ALLOWED_FIELDS = [
|
23
|
-
'address',
|
24
|
-
'
|
25
|
-
'
|
26
|
-
'country',
|
27
|
-
'email',
|
28
|
-
'family-names',
|
29
|
-
'fax',
|
30
|
-
'given-names',
|
31
|
-
'name-particle',
|
32
|
-
'name-suffix',
|
33
|
-
'orcid',
|
34
|
-
'post-code',
|
35
|
-
'region',
|
36
|
-
'tel',
|
37
|
-
'website'
|
23
|
+
'address', 'affiliation', 'city', 'country', 'email', 'family-names',
|
24
|
+
'fax', 'given-names', 'name-particle', 'name-suffix', 'orcid',
|
25
|
+
'post-code', 'region', 'tel', 'website'
|
38
26
|
].freeze # :nodoc:
|
39
27
|
|
40
28
|
# :call-seq:
|
@@ -42,7 +30,7 @@ module CFF
|
|
42
30
|
#
|
43
31
|
# Create a new Person with the supplied given and family names.
|
44
32
|
def initialize(param, *more)
|
45
|
-
if Hash
|
33
|
+
if param.is_a?(Hash)
|
46
34
|
@fields = param
|
47
35
|
else
|
48
36
|
@fields = Hash.new('')
|
@@ -50,6 +38,5 @@ module CFF
|
|
50
38
|
@fields['given-names'] = param
|
51
39
|
end
|
52
40
|
end
|
53
|
-
|
54
41
|
end
|
55
42
|
end
|
data/lib/cff/reference.rb
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
# See the License for the specific language governing permissions and
|
13
13
|
# limitations under the License.
|
14
14
|
|
15
|
-
|
15
|
+
##
|
16
16
|
module CFF
|
17
17
|
|
18
18
|
# Reference provides a reference pertaining to the software version or the
|
@@ -22,262 +22,65 @@ module CFF
|
|
22
22
|
class Reference < ModelPart
|
23
23
|
|
24
24
|
ALLOWED_FIELDS = [
|
25
|
-
'abbreviation',
|
26
|
-
'
|
27
|
-
'
|
28
|
-
'
|
29
|
-
'
|
30
|
-
'
|
31
|
-
'
|
32
|
-
'
|
33
|
-
'
|
34
|
-
'
|
35
|
-
'
|
36
|
-
'
|
37
|
-
'date-downloaded',
|
38
|
-
'date-published',
|
39
|
-
'date-released',
|
40
|
-
'department',
|
41
|
-
'doi',
|
42
|
-
'edition',
|
43
|
-
'end',
|
44
|
-
'entry',
|
45
|
-
'filename',
|
46
|
-
'institution',
|
47
|
-
'isbn',
|
48
|
-
'issn',
|
49
|
-
'issue',
|
50
|
-
'issue-date',
|
51
|
-
'issue-title',
|
52
|
-
'journal',
|
53
|
-
'keywords',
|
54
|
-
'license',
|
55
|
-
'license-url',
|
56
|
-
'loc-end',
|
57
|
-
'loc-start',
|
58
|
-
'location',
|
59
|
-
'medium',
|
60
|
-
'month',
|
61
|
-
'nihmsid',
|
62
|
-
'notes',
|
63
|
-
'number',
|
64
|
-
'number-volumes',
|
65
|
-
'pages',
|
66
|
-
'patent-states',
|
67
|
-
'pmcid',
|
68
|
-
'publisher',
|
69
|
-
'repository',
|
70
|
-
'repository-code',
|
71
|
-
'repository-artifact',
|
72
|
-
'scope',
|
73
|
-
'section',
|
74
|
-
'start',
|
75
|
-
'status',
|
76
|
-
'thesis-type',
|
77
|
-
'title',
|
78
|
-
'type',
|
79
|
-
'url',
|
80
|
-
'version',
|
81
|
-
'volume',
|
82
|
-
'volume-title',
|
83
|
-
'year',
|
25
|
+
'abbreviation', 'abstract', 'authors', 'collection-doi',
|
26
|
+
'collection-title', 'collection-type', 'commit', 'conference', 'contact',
|
27
|
+
'copyright', 'data-type', 'database', 'database-provider',
|
28
|
+
'date-accessed', 'date-downloaded', 'date-published', 'date-released',
|
29
|
+
'department', 'doi', 'edition', 'editors', 'editors-series', 'end',
|
30
|
+
'entry', 'filename', 'institution', 'isbn', 'issn', 'issue', 'issue-date',
|
31
|
+
'issue-title', 'journal', 'keywords', 'license', 'license-url', 'loc-end',
|
32
|
+
'loc-start', 'location', 'medium', 'month', 'nihmsid', 'notes', 'number',
|
33
|
+
'number-volumes', 'pages', 'patent-states', 'pmcid', 'publisher',
|
34
|
+
'recipients', 'repository', 'repository-code', 'repository-artifact',
|
35
|
+
'scope', 'section', 'senders', 'start', 'status', 'thesis-type', 'title',
|
36
|
+
'translators', 'type', 'url', 'version', 'volume', 'volume-title', 'year',
|
84
37
|
'year-original'
|
85
38
|
].freeze # :nodoc:
|
86
39
|
|
87
40
|
# The [defined set of reference types](https://citation-file-format.github.io/1.0.3/specifications/#/reference-types).
|
88
41
|
REFERENCE_TYPES = [
|
89
|
-
'art',
|
90
|
-
'
|
91
|
-
'
|
92
|
-
'
|
93
|
-
'
|
94
|
-
'
|
95
|
-
'
|
96
|
-
'
|
97
|
-
'
|
98
|
-
'
|
99
|
-
'database',
|
100
|
-
'dictionary',
|
101
|
-
'edited-work',
|
102
|
-
'encyclopedia',
|
103
|
-
'film-broadcast',
|
104
|
-
'generic',
|
105
|
-
'government-document',
|
106
|
-
'grant',
|
107
|
-
'hearing',
|
108
|
-
'historical-work',
|
109
|
-
'legal-case',
|
110
|
-
'legal-rule',
|
111
|
-
'magazine-article',
|
112
|
-
'manual',
|
113
|
-
'map',
|
114
|
-
'multimedia',
|
115
|
-
'music',
|
116
|
-
'newspaper-article',
|
117
|
-
'pamphlet',
|
118
|
-
'patent',
|
119
|
-
'personal-communication',
|
120
|
-
'proceedings',
|
121
|
-
'report',
|
122
|
-
'serial',
|
123
|
-
'slides',
|
124
|
-
'software',
|
125
|
-
'software-code',
|
126
|
-
'software-container',
|
127
|
-
'software-executable',
|
128
|
-
'software-virtual-machine',
|
129
|
-
'sound-recording',
|
130
|
-
'standard',
|
131
|
-
'statute',
|
132
|
-
'thesis',
|
133
|
-
'unpublished',
|
134
|
-
'video',
|
135
|
-
'website'
|
42
|
+
'art', 'article', 'audiovisual', 'bill', 'blog', 'book', 'catalogue',
|
43
|
+
'conference', 'conference-paper', 'data', 'database', 'dictionary',
|
44
|
+
'edited-work', 'encyclopedia', 'film-broadcast', 'generic',
|
45
|
+
'government-document', 'grant', 'hearing', 'historical-work',
|
46
|
+
'legal-case', 'legal-rule', 'magazine-article', 'manual', 'map',
|
47
|
+
'multimedia', 'music', 'newspaper-article', 'pamphlet', 'patent',
|
48
|
+
'personal-communication', 'proceedings', 'report', 'serial', 'slides',
|
49
|
+
'software', 'software-code', 'software-container', 'software-executable',
|
50
|
+
'software-virtual-machine', 'sound-recording', 'standard', 'statute',
|
51
|
+
'thesis', 'unpublished', 'video', 'website'
|
136
52
|
].freeze
|
137
53
|
|
138
54
|
# The [defined set of reference status types](https://citation-file-format.github.io/1.0.3/specifications/#/status-strings).
|
139
55
|
REFERENCE_STATUS_TYPES = [
|
140
|
-
'abstract',
|
141
|
-
'
|
142
|
-
'in-preparation',
|
143
|
-
'in-press',
|
144
|
-
'pre-print',
|
145
|
-
'submitted'
|
56
|
+
'abstract', 'advance-online', 'in-preparation', 'in-press',
|
57
|
+
'pre-print', 'submitted'
|
146
58
|
].freeze
|
147
59
|
|
148
60
|
# :call-seq:
|
61
|
+
# new(title) -> Reference
|
149
62
|
# new(title, type) -> Reference
|
150
63
|
#
|
151
|
-
# Create a new Reference with the supplied title and
|
64
|
+
# Create a new Reference with the supplied title and, optionally, type.
|
65
|
+
# If type is not given, or is not one of the
|
66
|
+
# [defined set of reference types](https://citation-file-format.github.io/1.0.3/specifications/#/reference-types),
|
67
|
+
# 'generic' will be used by default.
|
152
68
|
def initialize(param, *more)
|
153
|
-
|
154
|
-
|
155
|
-
@editors = []
|
156
|
-
@editors_series = []
|
157
|
-
@recipients = []
|
158
|
-
@senders = []
|
159
|
-
@translators = []
|
160
|
-
|
161
|
-
if Hash === param
|
162
|
-
build_model(param)
|
69
|
+
if param.is_a?(Hash)
|
70
|
+
@fields = build_model(param)
|
163
71
|
else
|
164
72
|
@fields = Hash.new('')
|
165
|
-
type = more[0].downcase
|
73
|
+
type = more[0] &&= more[0].downcase
|
166
74
|
@fields['type'] = REFERENCE_TYPES.include?(type) ? type : 'generic'
|
167
75
|
@fields['title'] = param
|
168
76
|
end
|
169
77
|
|
170
78
|
[
|
171
|
-
'keywords',
|
172
|
-
'patent-states'
|
79
|
+
'authors', 'contact', 'editors', 'editors-series', 'keywords',
|
80
|
+
'patent-states', 'recipients', 'senders', 'translators'
|
173
81
|
].each { |field| @fields[field] = [] if @fields[field].empty? }
|
174
82
|
end
|
175
83
|
|
176
|
-
# :call-seq:
|
177
|
-
# authors -> Array
|
178
|
-
#
|
179
|
-
# Return the list of authors for this Reference. To add an author to the
|
180
|
-
# list, use:
|
181
|
-
#
|
182
|
-
# ```
|
183
|
-
# reference.authors << author
|
184
|
-
# ```
|
185
|
-
#
|
186
|
-
# Authors can be a Person or Entity.
|
187
|
-
def authors
|
188
|
-
@authors
|
189
|
-
end
|
190
|
-
|
191
|
-
# :call-seq:
|
192
|
-
# contact -> Array
|
193
|
-
#
|
194
|
-
# Return the list of contacts for this Reference. To add a contact to the
|
195
|
-
# list, use:
|
196
|
-
#
|
197
|
-
# ```
|
198
|
-
# reference.contact << contact
|
199
|
-
# ```
|
200
|
-
#
|
201
|
-
# Contacts can be a Person or Entity.
|
202
|
-
def contact
|
203
|
-
@contact
|
204
|
-
end
|
205
|
-
|
206
|
-
# :call-seq:
|
207
|
-
# editors -> Array
|
208
|
-
#
|
209
|
-
# Return the list of editors for this Reference. To add an editor to the
|
210
|
-
# list, use:
|
211
|
-
#
|
212
|
-
# ```
|
213
|
-
# reference.editors << editor
|
214
|
-
# ```
|
215
|
-
#
|
216
|
-
# An editor can be a Person or Entity.
|
217
|
-
def editors
|
218
|
-
@editors
|
219
|
-
end
|
220
|
-
|
221
|
-
# :call-seq:
|
222
|
-
# editors_series -> Array
|
223
|
-
#
|
224
|
-
# Return the list of series editors for this Reference. To add a series
|
225
|
-
# editor to the list, use:
|
226
|
-
#
|
227
|
-
# ```
|
228
|
-
# reference.editors_series << editor
|
229
|
-
# ```
|
230
|
-
#
|
231
|
-
# An editor can be a Person or Entity.
|
232
|
-
def editors_series
|
233
|
-
@editors_series
|
234
|
-
end
|
235
|
-
|
236
|
-
# :call-seq:
|
237
|
-
# recipients -> Array
|
238
|
-
#
|
239
|
-
# Return the list of recipients for this Reference. To add a recipient
|
240
|
-
# to the list, use:
|
241
|
-
#
|
242
|
-
# ```
|
243
|
-
# reference.recipients << recipient
|
244
|
-
# ```
|
245
|
-
#
|
246
|
-
# Recipients can be a Person or Entity.
|
247
|
-
def recipients
|
248
|
-
@recipients
|
249
|
-
end
|
250
|
-
|
251
|
-
# :call-seq:
|
252
|
-
# senders -> Array
|
253
|
-
#
|
254
|
-
# Return the list of senders for this Reference. To add a sender to the
|
255
|
-
# list, use:
|
256
|
-
#
|
257
|
-
# ```
|
258
|
-
# reference.senders << sender
|
259
|
-
# ```
|
260
|
-
#
|
261
|
-
# Senders can be a Person or Entity.
|
262
|
-
def senders
|
263
|
-
@senders
|
264
|
-
end
|
265
|
-
|
266
|
-
# :call-seq:
|
267
|
-
# translators -> Array
|
268
|
-
#
|
269
|
-
# Return the list of translators for this Reference. To add a translator
|
270
|
-
# to the list, use:
|
271
|
-
#
|
272
|
-
# ```
|
273
|
-
# reference.translators << translator
|
274
|
-
# ```
|
275
|
-
#
|
276
|
-
# Translators can be a Person or Entity.
|
277
|
-
def translators
|
278
|
-
@translators
|
279
|
-
end
|
280
|
-
|
281
84
|
# :call-seq:
|
282
85
|
# add_language language
|
283
86
|
#
|
@@ -325,9 +128,7 @@ module CFF
|
|
325
128
|
# Set the `date-accessed` field. If a non-Date object is passed in it will
|
326
129
|
# be parsed into a Date.
|
327
130
|
def date_accessed=(date)
|
328
|
-
|
329
|
-
date = Date.parse(date)
|
330
|
-
end
|
131
|
+
date = Date.parse(date) unless date.is_a?(Date)
|
331
132
|
|
332
133
|
@fields['date-accessed'] = date
|
333
134
|
end
|
@@ -338,9 +139,7 @@ module CFF
|
|
338
139
|
# Set the `date-downloaded` field. If a non-Date object is passed in it will
|
339
140
|
# be parsed into a Date.
|
340
141
|
def date_downloaded=(date)
|
341
|
-
|
342
|
-
date = Date.parse(date)
|
343
|
-
end
|
142
|
+
date = Date.parse(date) unless date.is_a?(Date)
|
344
143
|
|
345
144
|
@fields['date-downloaded'] = date
|
346
145
|
end
|
@@ -351,9 +150,7 @@ module CFF
|
|
351
150
|
# Set the `date-published` field. If a non-Date object is passed in it will
|
352
151
|
# be parsed into a Date.
|
353
152
|
def date_published=(date)
|
354
|
-
|
355
|
-
date = Date.parse(date)
|
356
|
-
end
|
153
|
+
date = Date.parse(date) unless date.is_a?(Date)
|
357
154
|
|
358
155
|
@fields['date-published'] = date
|
359
156
|
end
|
@@ -364,9 +161,7 @@ module CFF
|
|
364
161
|
# Set the `date-released` field. If a non-Date object is passed in it will
|
365
162
|
# be parsed into a Date.
|
366
163
|
def date_released=(date)
|
367
|
-
|
368
|
-
date = Date.parse(date)
|
369
|
-
end
|
164
|
+
date = Date.parse(date) unless date.is_a?(Date)
|
370
165
|
|
371
166
|
@fields['date-released'] = date
|
372
167
|
end
|
@@ -409,43 +204,27 @@ module CFF
|
|
409
204
|
|
410
205
|
# Override superclass #fields as References contain model parts too.
|
411
206
|
def fields # :nodoc:
|
412
|
-
ref = {}
|
413
|
-
|
414
|
-
@fields.each do |field, value|
|
415
|
-
if value.respond_to?(:map)
|
416
|
-
ref[field] = value.map { |v| v.to_s } unless value.empty?
|
417
|
-
else
|
418
|
-
ref[field] = value.respond_to?(:fields) ? value.fields : value
|
419
|
-
end
|
420
|
-
end
|
421
|
-
|
422
207
|
[
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
[
|
427
|
-
['recipients', @recipients],
|
428
|
-
['senders', @senders],
|
429
|
-
['translators', @translators]
|
430
|
-
].each do |field, var|
|
431
|
-
ref[field] = expand_array_field(var) unless var.empty?
|
208
|
+
'authors', 'contact', 'editors', 'editors-series', 'recipients',
|
209
|
+
'senders', 'translators'
|
210
|
+
].each do |field|
|
211
|
+
normalize_modelpart_array!(@fields[field])
|
432
212
|
end
|
433
213
|
|
434
|
-
|
214
|
+
fields_to_hash(@fields)
|
435
215
|
end
|
436
216
|
|
437
217
|
private
|
438
218
|
|
439
|
-
def build_model(fields)
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
build_actor_collection(@translators, fields['translators'])
|
219
|
+
def build_model(fields) # :nodoc:
|
220
|
+
[
|
221
|
+
'authors', 'contact', 'editors', 'editors-series', 'recipients',
|
222
|
+
'senders', 'translators'
|
223
|
+
].each do |field|
|
224
|
+
build_actor_collection!(fields[field])
|
225
|
+
end
|
447
226
|
|
448
|
-
|
227
|
+
fields
|
449
228
|
end
|
450
229
|
|
451
230
|
public
|
@@ -453,6 +232,98 @@ module CFF
|
|
453
232
|
# Some documentation of "hidden" methods is provided here, out of the
|
454
233
|
# way of the main class code.
|
455
234
|
|
235
|
+
##
|
236
|
+
# :method: authors
|
237
|
+
# :call-seq:
|
238
|
+
# authors -> Array
|
239
|
+
#
|
240
|
+
# Return the list of authors for this Reference. To add an author to the
|
241
|
+
# list, use:
|
242
|
+
#
|
243
|
+
# ```
|
244
|
+
# reference.authors << author
|
245
|
+
# ```
|
246
|
+
#
|
247
|
+
# Authors can be a Person or Entity.
|
248
|
+
|
249
|
+
##
|
250
|
+
# :method: authors=
|
251
|
+
# :call-seq:
|
252
|
+
# authors = array_of_authors -> Array
|
253
|
+
#
|
254
|
+
# Replace the list of authors for this reference.
|
255
|
+
#
|
256
|
+
# Authors can be a Person or Entity.
|
257
|
+
|
258
|
+
##
|
259
|
+
# :method: contact
|
260
|
+
# :call-seq:
|
261
|
+
# contact -> Array
|
262
|
+
#
|
263
|
+
# Return the list of contacts for this Reference. To add a contact to the
|
264
|
+
# list, use:
|
265
|
+
#
|
266
|
+
# ```
|
267
|
+
# reference.contact << contact
|
268
|
+
# ```
|
269
|
+
#
|
270
|
+
# Contacts can be a Person or Entity.
|
271
|
+
|
272
|
+
##
|
273
|
+
# :method: contact=
|
274
|
+
# :call-seq:
|
275
|
+
# contact = array_of_contacts -> Array
|
276
|
+
#
|
277
|
+
# Replace the list of contacts for this reference.
|
278
|
+
#
|
279
|
+
# Contacts can be a Person or Entity.
|
280
|
+
|
281
|
+
##
|
282
|
+
# :method: editors
|
283
|
+
# :call-seq:
|
284
|
+
# editors -> Array
|
285
|
+
#
|
286
|
+
# Return the list of editors for this Reference. To add an editor to the
|
287
|
+
# list, use:
|
288
|
+
#
|
289
|
+
# ```
|
290
|
+
# reference.editors << editor
|
291
|
+
# ```
|
292
|
+
#
|
293
|
+
# An editor can be a Person or Entity.
|
294
|
+
|
295
|
+
##
|
296
|
+
# :method: editors=
|
297
|
+
# :call-seq:
|
298
|
+
# editors = array_of_editors -> Array
|
299
|
+
#
|
300
|
+
# Replace the list of editors for this reference.
|
301
|
+
#
|
302
|
+
# Editors can be a Person or Entity.
|
303
|
+
|
304
|
+
##
|
305
|
+
# :method: editors_series
|
306
|
+
# :call-seq:
|
307
|
+
# editors_series -> Array
|
308
|
+
#
|
309
|
+
# Return the list of series editors for this Reference. To add a series
|
310
|
+
# editor to the list, use:
|
311
|
+
#
|
312
|
+
# ```
|
313
|
+
# reference.editors_series << editor
|
314
|
+
# ```
|
315
|
+
#
|
316
|
+
# An editor can be a Person or Entity.
|
317
|
+
|
318
|
+
##
|
319
|
+
# :method: editors_series=
|
320
|
+
# :call-seq:
|
321
|
+
# editors_series = array_of_series_editors -> Array
|
322
|
+
#
|
323
|
+
# Replace the list of series editors for this reference.
|
324
|
+
#
|
325
|
+
# Series editors can be a Person or Entity.
|
326
|
+
|
456
327
|
##
|
457
328
|
# :method: keywords
|
458
329
|
# :call-seq:
|
@@ -498,5 +369,74 @@ module CFF
|
|
498
369
|
# Replace the list of patent states for this reference.
|
499
370
|
#
|
500
371
|
# Patent states will be converted to Strings on output.
|
372
|
+
|
373
|
+
##
|
374
|
+
# :method: recipients
|
375
|
+
# :call-seq:
|
376
|
+
# recipients -> Array
|
377
|
+
#
|
378
|
+
# Return the list of recipients for this Reference. To add a recipient
|
379
|
+
# to the list, use:
|
380
|
+
#
|
381
|
+
# ```
|
382
|
+
# reference.recipients << recipient
|
383
|
+
# ```
|
384
|
+
#
|
385
|
+
# Recipients can be a Person or Entity.
|
386
|
+
|
387
|
+
##
|
388
|
+
# :method: recipients=
|
389
|
+
# :call-seq:
|
390
|
+
# recipients = array_of_recipients -> Array
|
391
|
+
#
|
392
|
+
# Replace the list of recipients for this reference.
|
393
|
+
#
|
394
|
+
# Recipients can be a Person or Entity.
|
395
|
+
|
396
|
+
##
|
397
|
+
# :method: senders
|
398
|
+
# :call-seq:
|
399
|
+
# senders -> Array
|
400
|
+
#
|
401
|
+
# Return the list of senders for this Reference. To add a sender to the
|
402
|
+
# list, use:
|
403
|
+
#
|
404
|
+
# ```
|
405
|
+
# reference.senders << sender
|
406
|
+
# ```
|
407
|
+
#
|
408
|
+
# Senders can be a Person or Entity.
|
409
|
+
|
410
|
+
##
|
411
|
+
# :method: senders=
|
412
|
+
# :call-seq:
|
413
|
+
# senders = array_of_senders -> Array
|
414
|
+
#
|
415
|
+
# Replace the list of senders for this reference.
|
416
|
+
#
|
417
|
+
# Senders can be a Person or Entity.
|
418
|
+
|
419
|
+
##
|
420
|
+
# :method: translators
|
421
|
+
# :call-seq:
|
422
|
+
# translators -> Array
|
423
|
+
#
|
424
|
+
# Return the list of translators for this Reference. To add a translator
|
425
|
+
# to the list, use:
|
426
|
+
#
|
427
|
+
# ```
|
428
|
+
# reference.translators << translator
|
429
|
+
# ```
|
430
|
+
#
|
431
|
+
# Translators can be a Person or Entity.
|
432
|
+
|
433
|
+
##
|
434
|
+
# :method: translators=
|
435
|
+
# :call-seq:
|
436
|
+
# translators = array_of_translators -> Array
|
437
|
+
#
|
438
|
+
# Replace the list of translators for this reference.
|
439
|
+
#
|
440
|
+
# Translators can be a Person or Entity.
|
501
441
|
end
|
502
442
|
end
|