lib/mods_display/fields/subject.rb in mods_display-0.10.1 vs lib/mods_display/fields/subject.rb in mods_display-1.0.0.alpha1
- old
+ new
@@ -25,60 +25,34 @@
end
collapse_subjects return_fields
end
# Would really like to clean this up, but it works and is tested for now.
- 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
+ def to_html(view_context = ApplicationController.renderer)
+ component = ModsDisplay::FieldComponent.with_collection(
+ fields,
+ delimiter: '<br />'.html_safe,
+ value_transformer: ->(value) { value.join(' > ') }
+ )
+
+ view_context.render component
end
def process_hierarchicalGeographic(element)
values_from_subjects(element)
end
def process_name(element)
- name = ModsDisplay::Name.new([element], @config, @klass).fields.first
+ name = ModsDisplay::Name.new([element]).fields.first
name.values.first if name
end
private
+
+ def delimiter
+ ' > '
+ end
def values_from_subjects(element)
return_values = []
selected_subjects(element).each do |child|
if child.text.include?('--')