Class: IsoBibItem::IsoBibliographicItem
Overview
Instance Attribute Summary collapse
#abstract, #contributors, #copyright, #dates, #formatted_ref, #id, #language, #link, #notes, #relations, #script, #series
Instance Method Summary
collapse
Constructor Details
Returns a new instance of IsoBibliographicItem.
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 158
def initialize(**args)
super_args = args.select do |k|
%i[
id language script dates abstract contributors relations link
].include? k
end
super(super_args)
args[:docid] = [args[:docid]] unless args[:docid].is_a?(Array)
@docidentifier = args[:docid].map do |t|
t.is_a?(Hash) ? IsoDocumentId.new(t) : t
end
@edition = args[:edition]
@title = args[:titles].map do |t|
t.is_a?(Hash) ? IsoLocalizedTitle.new(t) : t
end
@type = args[:type]
@status = if args[:docstatus].is_a?(Hash)
IsoDocumentStatus.new(args[:docstatus])
else args[:docstatus] end
if args[:workgroup]
@workgroup = if args[:workgroup].is_a?(Hash)
IsoProjectGroup.new(args[:workgroup])
else args[:workgroup] end
end
@ics = args[:ics].map { |i| i.is_a?(Hash) ? Ics.new(i) : i }
if args[:copyright]
@copyright = if args[:copyright].is_a?(Hash)
CopyrightAssociation.new args[:copyright]
else args[:copyright] end
end
@link = args[:link].map { |s| s.is_a?(Hash) ? TypedUri.new(s) : s }
@id_attribute = true
end
|
Instance Attribute Details
116
117
118
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 116
def docidentifier
@docidentifier
end
|
#edition ⇒ String
119
120
121
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 119
def edition
@edition
end
|
134
135
136
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 134
def ics
@ics
end
|
128
129
130
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 128
def status
@status
end
|
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 121
|
#type ⇒ IsoBibItem::IsoDocumentType
125
126
127
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 125
def type
@type
end
|
131
132
133
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 131
def workgroup
@workgroup
end
|
Instance Method Details
#disable_id_attribute ⇒ Object
192
193
194
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 192
def disable_id_attribute
@id_attribute = false
end
|
#shortref(identifier, **opts) ⇒ String
232
233
234
235
236
237
238
239
240
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 232
def shortref(identifier, **opts)
pubdate = dates.select { |d| d.type == "published" }
year = if opts[:no_year] || pubdate.empty? then ""
else ':' + pubdate&.first&.on&.year&.to_s
end
year += ": All Parts" if opts[:all_parts] || @all_parts
"#{makeid(identifier, false, ' ')}#{year}"
end
|
#to_all_parts ⇒ Object
remove title part components and abstract
197
198
199
200
201
202
203
204
205
206
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 197
def to_all_parts
me = DeepClone.clone(self)
me.disable_id_attribute
@relations << DocumentRelation.new(type: "partOf", identifier: nil, url: nil, bibitem: me)
@title.each(&:remove_part)
@abstract = []
@docidentifier.each(&:remove_part)
@docidentifier.each(&:all_parts)
@all_parts = true
end
|
#to_most_recent_reference ⇒ Object
convert ISO:yyyy reference to reference to most recent instance of reference, removing date-specific infomration: date of publication, abstracts. Make dated reference Instance relation of the redacated document
212
213
214
215
216
217
218
219
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 212
def to_most_recent_reference
me = DeepClone.clone(self)
me.disable_id_attribute
@relations << DocumentRelation.new(type: "instance", identifier: nil, url: nil, bibitem: me)
@abstract = []
@dates = []
@docidentifier.each(&:remove_date)
end
|
#to_xml(builder = nil, **opts, &block) ⇒ String
249
250
251
252
253
254
255
256
257
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 249
def to_xml(builder = nil, **opts, &block)
if builder
render_xml builder, opts, &block
else
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
render_xml xml, opts, &block
end.doc.root.to_xml
end
end
|
#url(type = :src) ⇒ String
244
245
246
|
# File 'lib/iso_bib_item/iso_bibliographic_item.rb', line 244
def url(type = :src)
@link.find { |s| s.type == type.to_s }.content.to_s
end
|