Sha256: 76996863d74fcc4530384bc962ee49224e11fbcd969236f105a5b86872b4cc65
Contents?: true
Size: 1.32 KB
Versions: 2
Compression:
Stored size: 1.32 KB
Contents
# frozen_string_literal: true 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: [value.text] ) 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 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(1)) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mods_display-1.0.0 | lib/mods_display/fields/field.rb |
mods_display-1.0.0.alpha5 | lib/mods_display/fields/field.rb |