Sha256: c9444e416ffffe5fa6de9f6f24b89f1dc8357bcaa134be0d91676c4b88f0b806
Contents?: true
Size: 1.53 KB
Versions: 2
Compression:
Stored size: 1.53 KB
Contents
# encoding: utf-8 module ModsDisplay class Field def initialize(values) @values = values end def fields return_fields = @values.map do |value| ModsDisplay::Values.new( label: displayLabel(value) || label, values: [displayForm(@values) || value.text].flatten ) end collapse_fields(return_fields) end def label return nil if @values.nil? displayLabel(@values.first) end def to_html(view_context = ApplicationController.renderer) view_context.render ModsDisplay::FieldComponent.with_collection(fields, delimiter: delimiter), layout: false end def render_in(view_context) to_html(view_context) end private def delimiter nil end def displayForm(element) return element unless element # basically return nil display = element.children.find { |c| c.name == 'displayForm' } return display.text if display end def displayLabel(element) return unless element.respond_to?(:attributes) && element.attributes['displayLabel'].respond_to?(:value) "#{element.attributes['displayLabel'].value}:" end def collapse_fields(display_fields) return display_fields if display_fields.length == 1 display_fields.slice_when { |before, after| before.label != after.label }.map do |group| next group.first if group.length == 1 ModsDisplay::Values.new(label: group.first.label, values: group.map(&:values).flatten) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mods_display-1.0.0.alpha4 | lib/mods_display/fields/field.rb |
mods_display-1.0.0.alpha3 | lib/mods_display/fields/field.rb |