lib/stanford-mods/imprint.rb in stanford-mods-3.3.5 vs lib/stanford-mods/imprint.rb in stanford-mods-3.3.6

- old
+ new

@@ -140,13 +140,13 @@ def initialize(value) @value = value end - # True if the element text isn't blank or the placeholder "9999". - def valid? - text.present? && !['9999', '0000-00-00', 'uuuu'].include?(text.strip) + # True if the element text isn't blank or one of a set of unparseable values. + def parseable? + text.present? && !['9999', '0000-00-00', 'uuuu', '[uuuu]'].include?(text.strip) end def key_date? value.key? end @@ -159,11 +159,11 @@ date.present? end def sort_key return unless date - + year = if date.is_a?(EDTF::Interval) date.from.year else date.year end @@ -339,10 +339,10 @@ end end def parse_dates(elements) # convert to DateValue objects and keep only valid ones - dates = elements.map(&:as_object).flatten.map { |element| DateValue.new(element) }.select(&:valid?) + dates = elements.map(&:as_object).flatten.map { |element| DateValue.new(element) }.select(&:parseable?) # join any date ranges into DateRange objects point_dates, dates = dates.partition(&:point) if point_dates.any? range = DateRange.new(start: point_dates.find { |date| date.point == 'start' },