Class: ModsDisplay::Subject
- Inherits:
-
Field
- Object
- Field
- ModsDisplay::Subject
show all
- Defined in:
- lib/mods_display/fields/subject.rb
Instance Method Summary
collapse
Methods inherited from Field
#initialize, #label
Instance Method Details
#fields ⇒ Object
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/mods_display/fields/subject.rb', line 3
def fields
return_fields = []
@values.each do |value|
return_values = []
label = displayLabel(value) || I18n.t('mods_display.subject')
return_text = []
selected_subjects(value).each do |child|
if self.respond_to?(:"process_#{child.name}")
method_send = send(:"process_#{child.name}", child)
return_text << method_send unless method_send.to_s.empty?
else
if child.text.include?('--')
return_text << child.text.split('--').map(&:strip)
else
return_text << child.text unless child.text.empty?
end
end
end
return_values << return_text.flatten unless return_text.empty?
unless return_values.empty?
return_fields << ModsDisplay::Values.new(label: label, values: return_values)
end
end
collapse_subjects return_fields
end
|
#process_hierarchicalGeographic(element) ⇒ Object
70
71
72
|
# File 'lib/mods_display/fields/subject.rb', line 70
def process_hierarchicalGeographic(element)
values_from_subjects(element)
end
|
#process_name(element) ⇒ Object
74
75
76
77
78
|
# File 'lib/mods_display/fields/subject.rb', line 74
def process_name(element)
name = ModsDisplay::Name.new([element], @config, @klass).fields.first
name.values.first if name
end
|
#to_html ⇒ Object
Would really like to clean this up, but it works and is tested for now.
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/mods_display/fields/subject.rb', line 30
def to_html
return nil if fields.empty? || @config.ignore?
output = ''
fields.each do |field|
output << "<dt#{label_class} #{sanitized_field_title(field.label)}>#{field.label}</dt>"
output << "<dd#{value_class}>"
subs = []
field.values.each do |subjects|
buffer = []
sub_parts = []
subjects.each do |val|
if val.is_a?(ModsDisplay::Name::Person)
buffer << val.name
else
buffer << val
end
if @config.link && @config.hierarchical_link
if val.is_a?(ModsDisplay::Name::Person)
sub_parts << link_to_value(val.name, buffer.join(' '))
else
sub_parts << link_to_value(val, buffer.join(' '))
end
elsif @config.link
if val.is_a?(ModsDisplay::Name::Person)
sub_parts << link_to_value(val.name)
else
sub_parts << link_to_value(val.to_s)
end
else
sub_parts << val.to_s
end
end
subs << sub_parts.join(@config.delimiter)
end
output << subs.join('<br/>')
output << '</dd>'
end
output
end
|